属性重命名 @SerializedName

JSON格式的文本比xml更轻量,解析也很方便。得到网络上的资源后就是怎么解析json的问题了,有N种方法。

  • 直接用 JSONObject: 对象 ;JSONArray:数组 ;JSONStringer:String对象。这样一层一层的解析。
  • 用开源库,我采用的是google提供的GSON,这个方法好,前提得按照json的结构把实体类写好。写好之后就完美了。
  • 在as中,按照project structure-> dependencies->点击右边的+号->library dependency->输入gson。基本点击第一条选项,然后等他创建完,就可以使用GSON开源库了。
  • 然后就是创建相对应的实体类了,我用过网站和插件,都好,不过个人感觉插件更优,如果结构比较简单,也可以自己写。附上网站链接除了生成实体类还能检查json文本格式的网站。as插件就是GsonfFormat,可以自己选择生成的哪些对象。但是有时候json里命名和我们自己的变量命名有差别,这就要使用到属性重命名 @SerializedName ,如
@SerializedName("id")
private String mCityId;

这样这个变量就会被替换json中为id的字段。然而有时候一个字段有两个不同的名字,如:

"cond":{"txt":"多云"}
"cond":{"txt_d":"晴"}

这时候 @SerializedName 还有一个格式,这时候mTxt可以被当作txt或txt_d了,具体是谁取决于遇到谁了。

@SerializedName(value = "txt", alternate = {"txt_d"})
public String mTxt;

然后就是解析了,fromJson里第一个是需要解析的json文本,String格式,后面是实体类,这样之后json里的字段就和实体类里面的变量和其他类一一对应了。

Gson gson = new Gson();
CityRoot cityRoot = gson.fromJson(resultCity, CityRoot.class);

然后想怎么操作从网络上获取的资源就任我们了。


链接:https://www.jianshu.com/p/ccfe59a4c0bb
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值