gson(Gson 的入门使用)

时间:2024-10-13 18:00:30 阅读:10

Gson 的入门使用

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


Copyright © 2021-2022 All Rights Reserved 备案编号:闽ICP备2023009674号 网站地图 联系:dhh0407@outlook.com