如果不知道级别,如何从json提取特定的对象类型?

问题描述 投票:0回答:1

我有一个如下所示的json(这只是代表性的:):

我面临的问题是Person对象可以在json中处于不同级别。例如。在下面的情况下,对于RootNode1,它处于第2层;在RootNode2的情况下,在第1层,在第0级。当然,这些级别不限于2,也不以任何方式与RootNode绑定。 (并且这些节点值不是已知的。仅固定的,唯一的用于标识Person对象的是"Type": "Person"

我必须在所有情况下都提取Person对象。

在JsonPath库中有没有一种方法可以通过遍历来实现:https://github.com/json-path/JsonPath

[
    {
        "RootNode1": [
            {
                "ABC": [
                    {
                        "DEF": ""
                    },
                    {
                        "Name": "John",
                        "Type": "Person"
                        ....
                    }
                ]
            },
            {
                "DAC": {}
            }
        ]
    },
    {
        "RootNode2": [
            {
                "Name": "Williams",
                "Type": "Person"
                ....
            }
        ]
    },
    {
        {
            "Name": "Sam",
            "Type": "Person"
            ....
        }
    }
]
java json jsonpath
1个回答
0
投票

是的,完全有可能。如果相信自述文件,他会做出[]

JsonPath.read(document, "$.RootNode1.ABC[1].Type");

对于RootNode1

JsonPath.read(document, "$.RootNode2[1].Type");

对于RootNode2

JsonPath.read(document, "$.Type");

这是我所看到的唯一方法。但是可能更简单,我习惯于个人使用org.json

© www.soinside.com 2019 - 2024. All rights reserved.