美文网首页
最详细gson使用解析

最详细gson使用解析

作者: 玄冰0825 | 来源:发表于2019-03-02 10:02 被阅读0次

    一、Gson的基本用法

    fromJson()实现反序列化,toJson()实现了序列化

    二、属性重命名 @SerializedName 注解的使用

    • 在属性名上注解 @SerializedName,使POJO中的属性名转为json的键名
    • SerializedName注解还有一个属性alternate,接收一个String数组
        eg: @SerializedName(value = "data", alternate = {"Date", "date"})
       注:当json中的键名出现data Date date任意一个时均可以得到正确的结果。

    三、Gson中使用泛型

    对于JSON中的Number、boolean、Object、String和Array,可以直接使用

    Gson gson = new Gson();
    String jsonArray = "[\"Android\",\"Java\",\"PHP\"]";
    String[] strings = gson.fromJson(jsonArray, String[].class);
    

    而对于List<String>.class则行不通,所以诞生了 new TypeToken<List<String>>() {}.getType()

    例如:

    Gson gson = new Gson();
    String jsonArray = "[\"Android\",\"Java\",\"PHP\"]";
    List<String> stringList = gson.fromJson(jsonArray, new TypeToken<List<String>>() {}.getType());
    

    四、一个完整的例子:

    Result<T>适合任意{"code":"0","message":"success","data":{}}和{"code":"0","message":"success","data":[]}的格式

    public class TestC {
       public static void main(String[] args) {
           String jsonString="{\"code\":\"0\",\"message\":\"success\",\"data\":{\"data\": \"hello java\"}}";
           Gson gson = new Gson();
           Result<DateBean> resutlDate=gson.fromJson(jsonString,new TypeToken<Result<DateBean>>(){}.getType());
           System.out.println(resutlDate.getData().getDate());
       }
    }
    
    public class DateBean {
       @SerializedName("data")
       public String date;
       public String getDate() {
           return date;
       }
       public void setDate(String date) {
           this.date = date;
       }
    }
    
    public class Result<T> {
       public int code;
       public String message;
       public T data;
    
       public String getMessage() {
           return message;
       }
       public void setMessage(String message) {
           this.message = message;
       }
       public T getData() {
           return data;
       }
       public void setData(T data) {
           this.data = data;
       }
       public int getCode() {
           return code;
       }
       public void setCode(int code) {
           this.code = code;
       }
    }
    
    

    相关文章

      网友评论

          本文标题:最详细gson使用解析

          本文链接:https://www.haomeiwen.com/subject/xzxeuqtx.html