Java目标和Json之间的互转,寻常用的比力多的两个类库是Jackson和Gson,底下纪录一下Gson的学习使用。
基本看法:
Serialization:序列化,使Java目标到Json字符串的历程。
Deserialization:反序列化,字符串转换成Java目标
Gson的两个基本办法
toJson();
fromJson();
Gson的创建办法一:直接new Gson目标
// 使用new办法
Gson gson = new Gson();
// toJson 将bean目标转换为json字符串
String jsonStr = gson.toJson(user, User.class);
// fromJson 将json字符串转为bean目标
Student user= gson.fromJson(jsonStr, User.class);
// **序列化List**
String jsonStr2 = gson.toJson(list);
// **反序列化成List时必要使用到TypeToken getType()**
List<User> retList = gson.fromJson(jsonStr2,new TypeToken<List<User>>(){}.getType());
Gson的创建办法二:使用GsonBuilder
使用new Gson(),此时会创建一个带有默许设置选项的Gson实例,假如不想使用默许设置,那么就可以使用GsonBuilder。
//serializeNulls()是GsonBuilder提供的一种设置,当字段值为空或null时,仍然对该字段举行转换
Gson gson = new GsonBuilder().serializeNulls().create();
使用GsonBuilder创建Gson实例的步调:
起首创建GsonBuilder,然后调用GsonBuilder提供的种种设置办法举行设置,
最初调用GsonBuilder的create办法,将基于如今的设置创建一个Gson实例。
GsonBuilder的一些设置
Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation() //不合错误没有效@Expose注解的属性举行利用
.enableComplexMapKeySerialization() //当Map的key为繁复目标时,必要开启该办法
.serializeNulls() //当字段值为空或null时,仍然对该字段举行转换
.setDateFormat("yyyy-MM-dd HH:mm:ss:SSS") //时间转化为特定格式
.setPrettyPrinting() //对后果举行格式化,增长换行
.disableHtmlEscaping() //避免特别字符显现乱码
.registerTypeAdapter(User.class,new UserAdapter()) //为某特定目标设置安稳的序列或反序列办法,自界说Adapter需完成JsonSerializer大概JsonDeserializer接口
.create();
Gosn对繁复Map的处理时必要用到此中的
enableComplexMapKeySerialization() 设置:
Gson gson = new GsonBuilder()
.enableComplexMapKeySerialization().create(); //开启繁复处理Map办法
Map<List<User>, String> map = new HashMap<List<User>, String>();
// TODO 向map中添加数据
String jsonStr = gson.toJson(map); //toJson
Map<List<User>, String> resultMap = gson.fromJson(jsonStr,new TypeToken<Map<List<User>, String>>() {}.getType()); //fromJson
注意:假如Map的key为String,则可以不使用GsonBuilder的
enableComplexMapKeySerialization()办法,大概直接new Gson();
版权声明:本文来自互联网整理发布,如有侵权,联系删除
原文链接:https://www.yigezhs.comhttps://www.yigezhs.com/shenghuojineng/53245.html