最近在學(xué)習(xí)一些新的知識(shí),試著用MVP模式寫項(xiàng)目凰棉。以前在項(xiàng)目中使用的都是JsonObject和JsonArray來解析Json數(shù)據(jù),確實(shí)麻煩。下面一起來學(xué)習(xí)下Gson的基本使用:
一粘拾、推薦大家一個(gè)Android studio里面的工具:進(jìn)入setting——Plugins中安裝
使用方法:在建好的實(shí)體類里面右擊選中g(shù)enerate--Gsonformat;將Json數(shù)據(jù)方法 format一下 Ok 搞定创千!
二缰雇、Gson解析:Json數(shù)據(jù):
{
"reason": "成功的返回",
"result": {
"stat": "1",
"data": [
{
"uniquekey": "6c4caa0c3ba6e05e2a272892af43c00e",
"title": "楊冪的發(fā)際線再也回不去了么入偷?網(wǎng)友吐槽像半禿",
"date": "2017-01-05 11:03",
"category": "yule",
"author_name": "騰訊娛樂",
"url": "http://mini.eastday.com/mobile/170105110355287.html?qid=juheshuju",
"thumbnail_pic_s": "http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_1_mwpm_03200403.jpeg",
"thumbnail_pic_s02": "http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_2_mwpm_03200403.jpeg",
"thumbnail_pic_s03": "http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_3_mwpm_03200403.jpeg"
}
]
}
}
以上面的數(shù)據(jù)為例,使用工具將數(shù)據(jù)封裝為實(shí)體類械哟;
/**
* 新聞實(shí)體類
* Created by zzj on 2017/1/13.
*/
public class NewsDesignResEntry extends BaseEntity {
/**
* reason : 成功的返回
* result : {"stat":"1","data":[{"uniquekey":"6c4caa0c3ba6e05e2a272892af43c00e","title":"楊冪的發(fā)際線再也回不去了么疏之?網(wǎng)友吐槽像半禿","date":"2017-01-05 11:03","category":"yule","author_name":"騰訊娛樂","url":"http://mini.eastday.com/mobile/170105110355287.html?qid=juheshuju","thumbnail_pic_s":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_1_mwpm_03200403.jpeg","thumbnail_pic_s02":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_2_mwpm_03200403.jpeg","thumbnail_pic_s03":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_3_mwpm_03200403.jpeg"}]}
*/
private String reason;
/**
* stat : 1
* data : [{"uniquekey":"6c4caa0c3ba6e05e2a272892af43c00e","title":"楊冪的發(fā)際線再也回不去了么?網(wǎng)友吐槽像半禿","date":"2017-01-05 11:03","category":"yule","author_name":"騰訊娛樂","url":"http://mini.eastday.com/mobile/170105110355287.html?qid=juheshuju","thumbnail_pic_s":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_1_mwpm_03200403.jpeg","thumbnail_pic_s02":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_2_mwpm_03200403.jpeg","thumbnail_pic_s03":"http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_3_mwpm_03200403.jpeg"}]
*/
private ResultBean result;
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 stat;
/**
* uniquekey : 6c4caa0c3ba6e05e2a272892af43c00e
* title : 楊冪的發(fā)際線再也回不去了么暇咆?網(wǎng)友吐槽像半禿
* date : 2017-01-05 11:03
* category : yule
* author_name : 騰訊娛樂
* url : http://mini.eastday.com/mobile/170105110355287.html?qid=juheshuju
* thumbnail_pic_s : http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_1_mwpm_03200403.jpeg
* thumbnail_pic_s02 : http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_2_mwpm_03200403.jpeg
* thumbnail_pic_s03 : http://03.imgmini.eastday.com/mobile/20170105/20170105110355_806f4ed3fe71d04fa452783d6736a02b_3_mwpm_03200403.jpeg
*/
private List<DataBean> data;
public String getStat() {
return stat;
}
public void setStat(String stat) {
this.stat = stat;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
private String uniquekey;
private String title;
private String date;
private String category;
private String author_name;
private String url;
private String thumbnail_pic_s;
private String thumbnail_pic_s02;
private String thumbnail_pic_s03;
public String getUniquekey() {
return uniquekey;
}
public void setUniquekey(String uniquekey) {
this.uniquekey = uniquekey;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getAuthor_name() {
return author_name;
}
public void setAuthor_name(String author_name) {
this.author_name = author_name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getThumbnail_pic_s() {
return thumbnail_pic_s;
}
public void setThumbnail_pic_s(String thumbnail_pic_s) {
this.thumbnail_pic_s = thumbnail_pic_s;
}
public String getThumbnail_pic_s02() {
return thumbnail_pic_s02;
}
public void setThumbnail_pic_s02(String thumbnail_pic_s02) {
this.thumbnail_pic_s02 = thumbnail_pic_s02;
}
public String getThumbnail_pic_s03() {
return thumbnail_pic_s03;
}
public void setThumbnail_pic_s03(String thumbnail_pic_s03) {
this.thumbnail_pic_s03 = thumbnail_pic_s03;
}
}
}
}
請求解析:
public List<NewsDesignResEntry.ResultBean.DataBean> designResDatas = new ArrayList<>();
@Override
public void onSuccess(String s, Call call, Response response) {
Tools.sectionLog("okgolog","--json---"+s);
//實(shí)例化Gson
Gson gson = new Gson();
// Type listType = new TypeToken<List<NewsDesignResEntry>>(){}.getType();
//將Json數(shù)據(jù)轉(zhuǎn)換成我們封裝的對(duì)象
NewsDesignResEntry entry = gson.fromJson(s, NewsDesignResEntry.class);
//通過對(duì)象獲取我們需要的數(shù)據(jù)锋爪,進(jìn)行顯示
designResDatas = entry.getResult().getData();
// designResDatas.add(entry);
view.loadListSuccess(1,designResDatas);
}
});
注意:剛使用時(shí),利用Type從中直接獲取時(shí)爸业,出現(xiàn)錯(cuò)誤:
多條數(shù)據(jù)時(shí)不能從中直接獲取其骄,需要一步一步向下取。