android module的定义问题

有如下格式的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;
                }
            }
        }
    }
}

解析的实体类定义如下