android中树形json解析成对象

[
    {
        "name": "a",
        "size": "4",
        "Rate": "4",
        "level": "3",
        "children": [
            {
                "name": "aa",
                "size": "8",
                "Rate": "8",
                "level": "4",
                "children": [
                    {
                        "name": "aaa",
                        "size": "8",
                        "Rate": "8",
                        "level": "5"
                    }
                ]
            }
        ]
    },
    {
        "name": "b",
        "size": "4",
        "Rate": "4",
        "level": "3",
        "children": [
            {
                "name": "bb",
                "size": "8",
                "Rate": "8",
                "level": "4",
                "children": [
                    {
                        "name": "bbb",
                        "size": "8",
                        "Rate": "8",
                        "level": "5"
                    }
                ]
            }
        ]
    }
 ]

类似于这种的json数据格式,不确定具体有多少children,

我定义的bean样式

public class bean{
    private String name;
    private String size;
    private String Rate;
    private String level;
    private List<bean> children;
    ...
    get/set方法
}

利用fastjson解析

String json="json数据";
List<Bean> list=JSON.parseArray(json, Bean.class)

这样list.size()=0

这样的树形json如何解析?

阅读 5.4k
8 个回答

确实是比较特殊的一种情况,我相信楼主应该也不是就这三层的结构。我之前在做组织组织架构的时候也遇到类似的数据,我json的数据是没有转成JavaBean的。使用数据的时候采用的是递归的方式。我用Android studio的gson format插件格式化了楼主的数据,发现gson format 每一层都帮我新建了一个JavaBean(醉了)。如果楼主想从这个数据里面只是拿到一个总的人员列表,那就得到数据的时候手动递归取出所有数据吧!

新手上路,请多包涵

先转出固定数目的JSONObject 不确定部分再转成JSONArray

是用retrofit+rxjava出现这个问题的吗?

再递归遍历list中的bean是否有children节点,放到一个新的list中就可以取出来了。

新手上路,请多包涵

JSONObject,JSONArray 就够了。

新手上路,请多包涵

用自带的JSONObject就可以了

你list中的bean再重新写一个,不要使用你外层的bean就可以了

新手上路,请多包涵

换Kotlin

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题