Json解析庫Moshi——不只是Gson
阿新 • • 發佈:2019-01-11
說到Json解析庫,網上可以說一找一大堆,Json解析庫確實是大部分程式設計師都會使用的一類庫,雖然自己完全可以一步步去解析,但是其實真的沒必要自己去寫,不會偷懶的程式設計師不是好程式設計師。
說到moshi,可能很多童鞋沒聽過,但是說到square團隊,大家基本上都是聽說過的,moshi就是該團隊出品的一個Json解析庫。
這裡寫下最基本簡單的使用:
首先是compile:
compile 'com.squareup.moshi:moshi:1.2.0'
國際慣例,根據Json字串的格式建立實體(您可以純手寫或者使用GsonFormat等等):
public final class IdCard {
private String resultcode;
private String reason;
private ResultBean result;
public String getResultcode() {
return resultcode;
}
public void setResultcode(String resultcode) {
this.resultcode = resultcode;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public ResultBean getResult() {
return result;
}
public void setResult(ResultBean result) {
this.result = result;
}
public static class ResultBean {
private String area;
private String sex;
private String birthday;
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
}
接下來是使用moshi進行Json解析,這裡再次偷懶,直接把Json字串扔了進來:
String json = "{\"resultcode\":\"200\",\"reason\":\"成功\",\"result\":{\"area\":\" 上海市\",\"sex\":\"男\",\"birthday\":\"2016年08月07日\"}}";
接著例項Moshi物件:
Moshi moshi = new Moshi.Builder().build();
然後使用Moshi提供的Moshi.adapter()方法來繫結實體:
JsonAdapter<IdCard> jsonAdapter = moshi.adapter(IdCard.class);
最後就是解析Json了,使用JsonAdapter.fromJson()來傳入Json字串就可以解析成功了:
try {
IdCard idCard = jsonAdapter.fromJson(json);
Toast.makeText(context, idCard.getResult().getArea(), Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
這裡只解析了area鍵,點選後可以看到資料已經解析成功,是不是超級簡單呢?
解析網路資料時千萬別忘記新增訪問網路的許可權哦。
希望對各位有所幫助。
效果圖:
更多精彩內容,請關注我的微信公眾號——Android機動車。