https://www.cnblogs.com/qq78292959/p/3781808.html
根据这位大神的思路,结合现有Gson(版本2.8.5)进行泛型实体类简单封装
本文章只针对
#第一种: {"success":true,"data":{"averageStarLevel":4.7,"remarkCount":10}} #第二种: {"success":true,"data":{"page":10,"pageCount":29,"list":[{"starLevel":4,"remarkCotnent":"评价方未及时做出评价,系统默认满意!","remarkTime":"2013-02-27 07:21:48","explainContent":"","postMemberId":"y**f","tpLogoURL":"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png"},{"starLevel":4,"remarkCotnent":"评价方未及时做出评价,系统默认满意!","remarkTime":"2013-02-27 07:21:48","explainContent":"","postMemberId":"y**f","tpLogoURL":"http://i04.c.aliimg.com/cms/upload/2012/186/684/486681_1232736939.png"}],"statistics":{"star5":20,"star4":40,"star3":30,"star2":10,"star1":0}}}
第三种未做测试 道理一样稍微修改应该可以使用
每一个{}我看作一个实体,进行不同的实体编写,实体生成我使用的
PS:自己从别的博客上整理了一下,无法通过Android Stuido 安装的可以用离线方式,
插件下载地址:https://download.csdn.net/download/qq524752841/10628516
分别生成了三个实体
public class Data { private String title; private String url; private String imageUrl; private int type; private boolean isMobile; private boolean enabled; private int displayOrder; private int id; public void setTitle(String title) { this.title = title; } public String getTitle() { return title; } public void setUrl(String url) { this.url = url; } public String getUrl() { return url; } public void setImageUrl(String imageUrl) { this.imageUrl = imageUrl; } public String getImageUrl() { return imageUrl; } public void setType(int type) { this.type = type; } public int getType() { return type; } public void setIsMobile(boolean isMobile) { this.isMobile = isMobile; } public boolean getIsMobile() { return isMobile; } public void setEnabled(boolean enabled) { this.enabled = enabled; } public boolean getEnabled() { return enabled; } public void setDisplayOrder(int displayOrder) { this.displayOrder = displayOrder; } public int getDisplayOrder() { return displayOrder; } public void setId(int id) { this.id = id; } public int getId() { return id; } }
import java.util.List; public class Result{ private int pageNum; private int pageSize; private List data; private int totalRecord; private int totalPage; public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getPageNum() { return pageNum; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageSize() { return pageSize; } public void setData(List data) { this.data = data; } public List getData() { return data; } public void setTotalRecord(int totalRecord) { this.totalRecord = totalRecord; } public int getTotalRecord() { return totalRecord; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getTotalPage() { return totalPage; } }
public class JsonRootBean{ private Result result; private String message; private boolean success; public void setResult(Result result) { this.result = result; } public Result getResult() { return result; } public void setMessage(String message) { this.message = message; } public String getMessage() { return message; } public void setSuccess(boolean success) { this.success = success; } public boolean getSuccess() { return success; } }
三个类名可以随便定义 但是里面的字段并必须跟json的一直,不一致的情况过会再说
String json = "{\n" + " \"result\": {\n" + " \"pageNum\": 1,\n" + " \"pageSize\": 5,\n" + " \"data\": [\n" + " {\n" + " \"title\": \"tuan\",\n" + " \"url\": \"/Wx/Pintuan/List\",\n" + " \"imageUrl\": \"/Uploads/MobileBanner/2017/09/05/636402035800826088.jpg--400x300.png\",\n" + " \"type\": 0,\n" + " \"isMobile\": true,\n" + " \"enabled\": true,\n" + " \"displayOrder\": 0,\n" + " \"id\": 9\n" + " },\n" + " {\n" + " \"title\": \"test1\",\n" + " \"url\": \"http://www.zuanjisc.com/wx/profile/activity\",\n" + " \"imageUrl\": \"/Uploads/MobileBanner/2018/08/06/636691713025637935.jpg--400x300.jpg\",\n" + " \"type\": 0,\n" + " \"isMobile\": true,\n" + " \"enabled\": true,\n" + " \"displayOrder\": 0,\n" + " \"id\": 1\n" + " }\n" + " ],\n" + " \"totalRecord\": 2,\n" + " \"totalPage\": 1\n" + " },\n" + " \"message\": \"获取数据成功\",\n" + " \"success\": true\n" + "}";
JsonRootBean daf1 = new Gson().fromJson(json, new TypeToken
再说一下实体里面字段名跟对json里面不一致问题Gson提供一个注解
@SerializedName注解 能指定该字段在序列化成json时的名称
private String message;
改成
@SerializedName(message)
private String msg;