GSON 框架学习

直接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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值