Json使用之GJson
Posted 嗨小叔的程序猿之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Json使用之GJson相关的知识,希望对你有一定的参考价值。
前面已经讲解了JSON的三种使用方法、、。
GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。
一、Gson初始化
1、使用 Gson gson = new Gson();
2、使用 Gson gson = new GsonBuilder().create();
方式2可以配置多种的配置方式,非常简单使用方式1就可以满足,建议使用方式2初始化。
二、注解标签
@SerializedName : JSON的Key值与JavaBean不对应的时候,可以使用这个进行替换。(最高优先级)
@Expose :过滤注解,默认是既可以序列化,也可以反序列化。一定要配合Gson gson = new GsonBuilder().excludeFieldWithoutExposeAnnotation().create();使用(默认:@Expose(deserialize = false, serialize = false))
@Expose(deserialize = true, serialize = false):只解析使用,可以反序列化,不可以序列化。
@Expose(deserialize = false, serialize = true):可以序列化,不可以反序列化。
@Expose(deserialize = false, serialize = true):既可以序列化,也可以反序列化。注:这里的序列化指:将对象转化为json字符串。反序列化指:将json字符串转化成对象。
@Since(float v) :结合GsonBuilder().serVersion(n)使用。当n>=v时,才会解析。
@Util(float v) :与@Since相反,这次是n<v时才能够解析。
三、项目实战
1、JavaBean依旧还是Person、Department为例(请参照其他几个例子里面写的),唯一区别如下:
(注:这边主要用于自定义key值,进行转换的时候,转换后的json对应的key为对应的personNo)
2、转换如下所示:
(注:如果涉及到Date日期,需要通过GsonBuilder().setDateFormat("yyyy-MM-dd")设置对应的时间格式)
还有一个若转换为JSON过程中,需要做字段的映射规则,可使用如下:
Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.IDENTITY).create();//默认
FieldNamingPolicy包含特性(以JavaBean的deptName为例):
IDENTITY : 个性/特性/恒等式;deptName
LOWER_CASE_WITH_DASHES :小写+破折号;dept-name
LOWER_CASE_WITH_UNDERSCORES :小写+下划线;dept_name
UPPER_CAMEL_CASE :驼峰式+首字母大写;DeptName
UPPER_CAMEL_CASE_WITH_SPACES : 驼峰式+空格;Dept Name
3、运行结果
以上是关于Json使用之GJson的主要内容,如果未能解决你的问题,请参考以下文章