如何使用gson.fromjson

时间:2015-09-01 17:29:23

标签: java json gson

鉴于我有以下json结构:

{
    "Role": {
        "id": "5",
        "name": "bb1",
        "description": "desc1",
        "PermissionDeck": [
            {
                "id": "7",
                "Permission": [
                    {
                        "id": "398"
                    },
                    {
                        "id": "399"
                    },
                    {
                        "id": "400"
                    },
                    {
                        "id": "401"
                    },
                    {
                        "id": "402"
                    }
                ],
                "Limit": [
                    {
                        "id": "4"
                    },
                    {
                        "id": "5"
                    }
                ]
            }
        ]
    }
}

如果我想将其转换为LinkedTreeMap result,以便可以通过以下方式检索其内容:

result.get("Role")返回地图

result.get("Role").get("PermissionDeck").size() == 5

result.get("Role").get("PermissionDeck").get(0).get("id") == 398

基本上使gson.fromjson递归进入结构,并将任何嵌套结构折叠到LinkedTreeMap中,直到它到达最内层,然后进入LinkedTreeMap

如果不编写自定义递归方法,这可能吗?

1 个答案:

答案 0 :(得分:1)

你做不到。你得到的最接近的是JsonObject并为每个嵌套成员使用适当的getter。换句话说,您的代码需要明确其在JSON中的期望。

例如

JsonObject result = new Gson().fromJson(theJson), JsonObject.class);
System.out.println(result.getAsJsonObject("Role").getAsJsonArray("PermissionDeck").size());

将打印1,因为根JSON对象中名为PermissionDeck的JSON对象中只有一个名为Role的JSON数组中的元素。