有如下格式的json
{"ret":200,"data":{"a":{"m1":[{"pmid":"22222","pmn":"xcvxdecv","pmv":1},{"pmid":"44444","pmn":"thrtdeedh","pmv":0},{"pmid":"55555","pmn":"nghnghm","pmv":1}],"m2":[{"pmid":"34234","pmn":"dfsd","pmv":0},{"pmid":"3453","pmn":"wefwef","pmv":1},{"pmid":"56456","pmn":"xcvxc","pmv":1}],"m3":[{"pmid":"67856","pmn":"yukyukuy","pmv":1},{"pmid":"5675675","pmn":"trhtrjuyky","pmv":0},{"pmid":"6878908","pmn":"xcyukykuvxc","pmv":0}]},"api_version":"v1.5"},"msg":"V3.3.0 YesApi SVIP.Sqq207206880_MyApiSandbox.AZhikanqrcode 2022-05-18 10:03:38 -"}
其中"m1,m2,m3" list内的值都是相同的,现在要在adapter里面获取到m1,m2,m3里面的内容
在定义对应的javabean module的时候,有没有简单的定义方法,不用重复的写三次
{
"ret":200,
"data":{
"a":{
"m1":[
{
"pmid":"22222",
"pmn":"xcvxdecv",
"pmv":1
},
{
"pmid":"44444",
"pmn":"thrtdeedh",
"pmv":0
},
{
"pmid":"55555",
"pmn":"nghnghm",
"pmv":1
}
],
"m2":[
{
"pmid":"34234",
"pmn":"dfsd",
"pmv":0
},
{
"pmid":"3453",
"pmn":"wefwef",
"pmv":1
},
{
"pmid":"56456",
"pmn":"xcvxc",
"pmv":1
}
],
"m3":[
{
"pmid":"67856",
"pmn":"yukyukuy",
"pmv":1
},
{
"pmid":"5675675",
"pmn":"trhtrjuyky",
"pmv":0
},
{
"pmid":"6878908",
"pmn":"xcyukykuvxc",
"pmv":0
}
]
},
"api_version":"v1.5"
},
"msg":"V3.3.0 YesApi SVIP.Sqq207206880_MyApiSandbox.AZhikanqrcode 2022-05-18 10:03:38 -"
}
m1,m2,m3 value 内容一致,key不一致
要是想把m1,m2,m3 收敛到一起,和服务端协商下是不是返回成一个list格式。
有些json定义成m1,m2,m3 是处于业务考虑,必须这么写。
1.json解析成的model,题主可以使用Gson2Bean转换插件进行转换
2.或者先手动的转化为JSONObject,然后再转化成自己想要转化的方式。这种的方式比较灵活。
server端强制这样写了,没法改结构,
m1-m3是分别显示在同1个activity里面的3个RecyclerView 里面,所以需要分开解析
同时因为3个RecyclerView共用同1个adapter,在传值的时候也不好操作
这有什么难理解的,Gson解析,类型匹配上就能够解析出来
你定义的实体类中有
private List<M> m, m1, m2, m3;
四个列表类型所以解析时会依次匹配列表,其他字段因没有对应的类型而无法解析
你这个json可以全部解析
public class DataBean {
private int ret;
private DataBean data;
private String msg;
public int getRet() {
return ret;
}
public void setRet(int ret) {
this.ret = ret;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public static class DataBean {
private ABean a;
private String api_version;
public ABean getA() {
return a;
}
public void setA(ABean a) {
this.a = a;
}
public String getApi_version() {
return api_version;
}
public void setApi_version(String api_version) {
this.api_version = api_version;
}
public static class ABean {
private List<M1Bean> m1;
private List<M2Bean> m2;
private List<M3Bean> m3;
public List<M1Bean> getM1() {
return m1;
}
public void setM1(List<M1Bean> m1) {
this.m1 = m1;
}
public List<M2Bean> getM2() {
return m2;
}
public void setM2(List<M2Bean> m2) {
this.m2 = m2;
}
public List<M3Bean> getM3() {
return m3;
}
public void setM3(List<M3Bean> m3) {
this.m3 = m3;
}
public static class M1Bean {
private String pmid;
private String pmn;
private int pmv;
public String getPmid() {
return pmid;
}
public void setPmid(String pmid) {
this.pmid = pmid;
}
public String getPmn() {
return pmn;
}
public void setPmn(String pmn) {
this.pmn = pmn;
}
public int getPmv() {
return pmv;
}
public void setPmv(int pmv) {
this.pmv = pmv;
}
}
public static class M2Bean {
private String pmid;
private String pmn;
private int pmv;
public String getPmid() {
return pmid;
}
public void setPmid(String pmid) {
this.pmid = pmid;
}
public String getPmn() {
return pmn;
}
public void setPmn(String pmn) {
this.pmn = pmn;
}
public int getPmv() {
return pmv;
}
public void setPmv(int pmv) {
this.pmv = pmv;
}
}
public static class M3Bean {
private String pmid;
private String pmn;
private int pmv;
public String getPmid() {
return pmid;
}
public void setPmid(String pmid) {
this.pmid = pmid;
}
public String getPmn() {
return pmn;
}
public void setPmn(String pmn) {
this.pmn = pmn;
}
public int getPmv() {
return pmv;
}
public void setPmv(int pmv) {
this.pmv = pmv;
}
}
}
}
}
解析的实体类定义如下