Android 笔记 json GSON,最详细gson使用解析

一、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.class则行不通,所以诞生了 new TypeToken>() {}.getType()

例如:

Gson gson = new Gson();

String jsonArray = "[\"Android\",\"Java\",\"PHP\"]";

List stringList = gson.fromJson(jsonArray, new TypeToken>() {}.getType());

四、一个完整的例子:

Result适合任意{"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 resutlDate=gson.fromJson(jsonString,new TypeToken>(){}.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 {

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;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值