Gson用法整理
2016-03-22 17:21
260 查看
1 概述
Gson是Google提供的一款json解析工具,用来在Java对象和Json数据之前进行映射。其源代码位于github.
解析需要注意:
1、类里面的属性名必须和json字段里面的key一模一样,或者使用@SerializedName指定别名和json中的名字一模一样。
2、{} 代表一个对象
3、[]代表一个List
4、如果不想些get/set方法,需要吧属性设置为public
2 简单对象转化
Gson gson = new Gson();
//Model -> json, 其中myMode支持一般对象类型,内部可以包含对象嵌套,List对象类型等。
String json = gson.toJson(myModel);
//json->Model 1:myMode为简单对象,即内部不包含复杂对象嵌套
SimpleModel myModel = gson.fromJson(json, SimpleModel.class);
//json->ComplexModel 2:myMode为嵌套对象,或者List组合对象等
Type type = new TypeToken(List>(){}.getType();
List list = gson.fromJson(json, type);
3 Gson注解和GsonBuilder
@Expose
导出标记注解,配合GsonBuilder使用(excludeFieldsWithoutExposeAnnotation此设置就是不使用没有@Expose注解的属性)
@Expose (serialize = false, deserialize = false) ,serialize = false,
deserialize = false,序列化和反序列化的时候都不包含此字段。默认设置都是为true。
transient申明字段以此来说明序列化和反序列化都不包含这个字段。 @SerializedName(“name”)
指定别名,也就是json中名字为别名name,实际名字是属性中定义的名字。也就是说序列化的时候,这个属性的名字会被替换成name,解析的时候name会被替换成属性名。
@Since(version) 用于维护版本,从某个版本version开始,有这个字段.和setVersion配合使用。
@Until(version) 用于维护版本,到某个版本version为止,没有这个字段。和setVersion配合使用。
GsonBuilder用来自定义输出的json格式,解析说明:
excludeFieldsWithoutExposeAnnotation 不导出没有@Expose注解的属性
enableComplexMapKeySerialization 支持key为map的复杂对象形式
setDateFormat(“yyyy-MM-dd HH:mm:ss:SSS”) 时间格式转化为制定格式
setFieldNamingPolicy(policy)
设置字段某些属性为policy,注:此注解对于实体上使用了@SerializedName注解的不会生效. policy取值如下:
FieldNamingPolicy.UPPER_CAMEL_CASE 首字母大写
FieldNamingPolicy.LOWER_CASE_WITH_DASHES 全部转为小写
FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES 全部转为大写
excludeFieldsWithModifiers(modifier) 某些修饰符的属性不导出,modify为:
Modifier.PRIVATE
Modifier.PUBLIC
Modifier.PROTECTED
setPrettyPrinting 对json执行格式化优化 setVersion 序列化的时候会根据版本选择时候序列化此字段。
serializeNulls 默认取值为null的对象,将不会出现在json中,此设置将取值为null的字段也输出到json字符串中
4 TypeAdapter
TypeAdapter是Gson实现解析的核心类。可以通过GsonBuilder.registerTypeAdapter来注册自己的TypeAdapter。
read 方法实现将json字符串反序列化为Java对象 write 方法实现将Java对象序列化为json字符串
文章来源:
http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/felix_wangq/article/details/49996385
Gson是Google提供的一款json解析工具,用来在Java对象和Json数据之前进行映射。其源代码位于github.
解析需要注意:
1、类里面的属性名必须和json字段里面的key一模一样,或者使用@SerializedName指定别名和json中的名字一模一样。
2、{} 代表一个对象
3、[]代表一个List
4、如果不想些get/set方法,需要吧属性设置为public
2 简单对象转化
Gson gson = new Gson();
//Model -> json, 其中myMode支持一般对象类型,内部可以包含对象嵌套,List对象类型等。
String json = gson.toJson(myModel);
//json->Model 1:myMode为简单对象,即内部不包含复杂对象嵌套
SimpleModel myModel = gson.fromJson(json, SimpleModel.class);
//json->ComplexModel 2:myMode为嵌套对象,或者List组合对象等
Type type = new TypeToken(List>(){}.getType();
List list = gson.fromJson(json, type);
3 Gson注解和GsonBuilder
@Expose
导出标记注解,配合GsonBuilder使用(excludeFieldsWithoutExposeAnnotation此设置就是不使用没有@Expose注解的属性)
@Expose (serialize = false, deserialize = false) ,serialize = false,
deserialize = false,序列化和反序列化的时候都不包含此字段。默认设置都是为true。
transient申明字段以此来说明序列化和反序列化都不包含这个字段。 @SerializedName(“name”)
指定别名,也就是json中名字为别名name,实际名字是属性中定义的名字。也就是说序列化的时候,这个属性的名字会被替换成name,解析的时候name会被替换成属性名。
@Since(version) 用于维护版本,从某个版本version开始,有这个字段.和setVersion配合使用。
@Until(version) 用于维护版本,到某个版本version为止,没有这个字段。和setVersion配合使用。
GsonBuilder用来自定义输出的json格式,解析说明:
excludeFieldsWithoutExposeAnnotation 不导出没有@Expose注解的属性
enableComplexMapKeySerialization 支持key为map的复杂对象形式
setDateFormat(“yyyy-MM-dd HH:mm:ss:SSS”) 时间格式转化为制定格式
setFieldNamingPolicy(policy)
设置字段某些属性为policy,注:此注解对于实体上使用了@SerializedName注解的不会生效. policy取值如下:
FieldNamingPolicy.UPPER_CAMEL_CASE 首字母大写
FieldNamingPolicy.LOWER_CASE_WITH_DASHES 全部转为小写
FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES 全部转为大写
excludeFieldsWithModifiers(modifier) 某些修饰符的属性不导出,modify为:
Modifier.PRIVATE
Modifier.PUBLIC
Modifier.PROTECTED
setPrettyPrinting 对json执行格式化优化 setVersion 序列化的时候会根据版本选择时候序列化此字段。
serializeNulls 默认取值为null的对象,将不会出现在json中,此设置将取值为null的字段也输出到json字符串中
4 TypeAdapter
TypeAdapter是Gson实现解析的核心类。可以通过GsonBuilder.registerTypeAdapter来注册自己的TypeAdapter。
read 方法实现将json字符串反序列化为Java对象 write 方法实现将Java对象序列化为json字符串
文章来源:
http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/felix_wangq/article/details/49996385
相关文章推荐
- eclipse统计项目的代码行数
- F
- 添加、显示表情图片
- Android中不被硬件加速支持的操作
- FineUI Gird单元格编辑 保存修改的数据到数据库 LINQ
- 网络第03天:XML数据解析
- (WIP)Start my first kernel journey (by quqi99)
- 如何使用C#创建WebService
- mysql优化
- iOS开发——model类模板(过滤null和ID)
- 《深入理解Java虚拟机》读书笔记
- 安卓Animation
- Bag of Features (BOF)图像检索算法
- 深层理解DFT与DTFT,DFS的关系
- eclipse(Mars版)配置svn和maven插件
- 计算机视觉的测试数据及源码站点
- windows环境下的git安装及使用
- 文字字数限制 省略号
- android数据持久化存储(2)
- 编写高质量前端代码