Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用gson.fromjson递归转换json_Java_Json_Gson - Fatal编程技术网

Java 如何使用gson.fromjson递归转换json

Java 如何使用gson.fromjson递归转换json,java,json,gson,Java,Json,Gson,假设我有以下json结构: { "Role": { "id": "5", "name": "bb1", "description": "desc1", "PermissionDeck": [ { "id": "7", "Permission": [ {

假设我有以下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.get(“角色”)
返回映射

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


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

您不能。最接近的方法是使用
JsonObject
并为每个嵌套成员使用适当的getter。换句话说,您的代码需要明确说明它在JSON中的预期内容

比如说

JsonObject result = new Gson().fromJson(theJson), JsonObject.class);
System.out.println(result.getAsJsonObject("Role").getAsJsonArray("PermissionDeck").size());
将打印
1
,因为在根JSON对象中名为
Role
的JSON对象中,JSON数组中只有一个名为
PermissionDeck
的元素

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