对象嵌套对象的json数据解析问题

    最近项目中使用到了对象嵌套对象(即数组嵌套数数组)的json数据,结构如下:

{
    "name": "zhangsan",
    "age": "18",
    "score": [
        {
            "year": "2016",
            "yuwen": "60",
            "shuxue": "60",
            "yingyu": "60"
        },
        {
            "year": "2017",
            "yuwen": "80",
            "shuxue": "80",
            "yingyu": "80"
        },
        {
            "year": "2018",
            "yuwen": "100",
            "shuxue": "100",
            "yingyu": "100"
        }
    ]
}

最初编辑的实体类是这样的(省略get、set方法):

然后解析方法如下:

发现获取不到信息,在网上查阅资料整理如下:

1.分层获取:

    将获取到的json数据转化为jsonobject,然后根据嵌套在内部的数组名称获取到jsonarray,然后在循环获取其中的数据。这种办法可以获取到嵌套的数据并可以通过get、set方法把数据赋值给实体类,但如果数据过多的话就不方便了。

2.修改实体类:

    因为通过fromjson解析的时候不能将json中的score数组解析成List<StudentScoreBean>类型,但我们可以通过添加内部类的方式去解决这个问题,修改后的的StudentBean如下:

public class StudentBean {
    private String name;
    private String age;
    private List<ScoreBean> score;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public List<ScoreBean> getScore() {
        return score;
    }

    public void setScore(List<ScoreBean> score) {
        this.score = score;
    }

    public static class ScoreBean {
        private String year;
        private String yuwen;
        private String shuxue;
        private String yingyu;

        public String getYear() {
            return year;
        }

        public void setYear(String year) {
            this.year = year;
        }

        public String getYuwen() {
            return yuwen;
        }

        public void setYuwen(String yuwen) {
            this.yuwen = yuwen;
        }

        public String getShuxue() {
            return shuxue;
        }

        public void setShuxue(String shuxue) {
            this.shuxue = shuxue;
        }

        public String getYingyu() {
            return yingyu;
        }

        public void setYingyu(String yingyu) {
            this.yingyu = yingyu;
        }
    }
}

问题解决!

 

附:如果有json数据的话,可以使用jsonFormat一键生成上述代码。Android studio使用方法:file->settings->plugins->搜索Gsonformat。下载完成后新建一个类,windows下快捷键是alt+insert选择GsonFormat,将json数据复制进去,点击确定就会直接生成实体类。

 

特别鸣谢:http://sumile.cn/archives/970.html

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值