1. 程式人生 > >Json解析庫Moshi——不只是Gson

Json解析庫Moshi——不只是Gson

說到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機動車