直接new Gson()对象
这种方式创建的Gson对象一些参数都是默认配置
//使用new方法
Gson gson = new Gson;
//tojson(需要序列化的对象,序列化对象所属的类)
String jsonStr = gson.toJson(user,User.class);
// fromJson 将json字符串转为bean对象
User user = gson.fromJson(jsonStr);
List<WealthMangeBean> wealthManageBeanList = new ArrayList<wealthManageBean>();
list.add(wealthManageBeanList);
// **序列化List**
String jsonStr2 = gson.toJson(wealthManageBeanList);
// **反序列化成List时需要使用到TypeToken来说明list里面的对象**
List<wealthManageBean> wealthManageBeanList2 =
gson.fromJson(jsonStr2, new TypeToken<List<WealthManageBean>>(){}.class);
通过GsonBuilder构建自定义Gson对象
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();
2、实现Gson对复杂Map的处理
enableComplexMapKeySerialzation()
Gson gson = new GsonBuilder().enableComplexMapKeySerialzation();//设定能够针对复杂的Map类型进行序列化和反序列化,如果不设置这个序列化的结果会出现错误
Map<WealthManageBean,WealthManageBean> map = new HashMap<WealthManageBean,WealthManageBean>();
map.put(wealthManageBean,wealthManageBean);
Gson gson4 = new GsonBuilder().create();
String json5 = gson4.toJson(map);
Object json6 = gson4.fromJson(
json5,
new TypeToken<Map<WealthManageBean,WealthManageBean>>(){}
.getType());
3、Gson的注解
@Expose/@Expose(serialize = false)/@Expose(deserialize = false)
//@Expose中serialize和deserialize属性是可选的,默认两个都为true。 //如果serialize为true,调用toJson时会序列化该属性, //如果deserialize为true,调用fromJson生成Java对象时不会进行反序列化
@SerializedName注解 能将制定字段在序列化成json时候的名称
@SerializedName("w")
private int width;
本文深入探讨Gson库的高级用法,包括如何自定义Gson对象,实现复杂Map的处理,以及理解Gson注解的作用。通过示例代码,详细解释了如何序列化和反序列化List、Map等复杂数据结构。
1005

被折叠的 条评论
为什么被折叠?



