【JSON】GSON的使用

1.转json字符串(gson.toJson),支持java bean、Map、List等

  1. Gson gson = new Gson();  
  2.         Student student = new Student();  
  3.         student.setName("xuanyouwu");  
  4.         student.setAge(26);  
  5.         String jsonStr = gson.toJson(student); 

2.json字符串转换成对象

  1. Type type = new TypeToken<ArrayList<String>>() {  
  2. }.getType();  
  3. ArrayList<String> sList=gson.fromJson(listJsonStr, type); 

3.JsonObject

  1. JsonObject jsonObject=new JsonObject();  
  2. jsonObject.addProperty("name","xuanyouwu");  
  3. jsonObject.addProperty("age",26);  
  4. String jsonStr = jsonObject.toString();

4.JsonArray数组字段

  1. JsonObject jsonObject2=new JsonObject();  
  2. jsonObject2.addProperty("name","xuanyouwu");  
  3. jsonObject2.addProperty("age",26);  
  4. JsonArray jsonElements2=new JsonArray();  
  5. jsonElements2.add("骑车");  
  6. jsonElements2.add("打游戏");  
  7. jsonElements2.add("看电视");  
  8. jsonObject2.add("hobby",jsonElements2);  
  9. log("------>create jsonObject inner JsonArray:"+jsonObject2);  
           运行结果:

            ------>create jsonObject inner JsonArray:{"name":"xuanyouwu","age":26,"hobby":["骑车","打游戏","看电视"]}

5.重命名注解( SerializedName


5.1 转换关键字key

json转换成JavaBean时,json字段的key 默认必须和我们声明类的字段名称一样,当服务器端返回了关键字怎么办,比如key 为new switch这样,我们    在声明类的时候不能写这样的字段,可能你想服务器端改动,他可能要改数据库,但是我告诉你,做服务端的大部分不愿意改动他的json,是很自私的!这时候重命名注解都排上用场了   第二种场景:服务器端返回的json 的key 简直太丑,或者太长,你想简化,my_parent_name,可以简化成mpn 比较优雅简介

  1. public static class User {  
  2.         public String name;  
  3.         public int age;  
  4.         @SerializedName("new")  
  5.         public int isnew;  
  6.   
  7.         @Override  
  8.         public String toString() {  
  9.             return "User{" +  
  10.                     "name='" + name + '\'' +  
  11.                     ", age=" + age +  
  12.                     ", isnew=" + isnew +  
  13.                     '}';  
  14.         }  
  15.     }  

5.2 结合alternate 提供多种备用字段key来解析

  1. public static class User {  
  2.         public String name;  
  3.         public int age;  
  4.         @SerializedName(value = "desc",alternate = {"other","note"})  
  5.         public String desc;  
  6.   
  7.         @Override  
  8.         public String toString() {  
  9.             return "User{" +  
  10.                     "name='" + name + '\'' +  
  11.                     ", age=" + age +  
  12.                     ", desc='" + desc + '\'' +  
  13.                     '}';  
  14.         }  
  15.     }  

@SerializedName(value ="desc",alternate = {"other","note"})  如果json中有other就会解析成desc 如果有note也会解析成desc,注意1:value中的值不能出现在alternate中,注意2:alternate的备选字段 会后面的替换前面的


转载自https://blog.csdn.net/axuanqq/article/details/51441590



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值