Java 如何获取JSON路径?

Java 如何获取JSON路径?,java,json,Java,Json,给定一个JSON示例: { "hello" : "wolrd", "arrayField" : ["one", "two", "three"], "mapField" : { "name" : "john", "lastName" : "doe" } } Java中是否有一个框架可以帮助我从JSON树中获取JSON路径结构?类似于此: $.hello $.arrayField[0] $.arrayField[1] $.arrayField[2] $.mapFi

给定一个JSON示例:

{
  "hello" : "wolrd",
  "arrayField" : ["one", "two", "three"],
  "mapField" : {
    "name" : "john",
    "lastName" : "doe" 
  }
}
Java中是否有一个框架可以帮助我从JSON树中获取JSON路径结构?类似于此:

$.hello
$.arrayField[0]
$.arrayField[1]
$.arrayField[2]
$.mapField.name
$.mapField.lastName
编辑:

我已经使用fasterxml的Jackson编写了第一种方法。但我想知道是否有更强健/灵活的产品

   final JsonNode rootNode = mapper.readValue(jon, JsonNode.class);
    printFieldKeys(rootNode, "$");

    private static void printFieldKeys(JsonNode rootNode, String parent) {
        final Iterator<Entry<String, JsonNode>> fieldIt = rootNode.fields();
        while (fieldIt.hasNext()) {
            final Entry<String, JsonNode> next = fieldIt.next();
            final JsonNode value = next.getValue();
            final String path = parent + "." + next.getKey();

            if (value.isValueNode()) {
                System.out.println(path + " = " + value.asText());
            } else  {
                System.out.println(path);
            }


            if (value.isArray()) {
                for (int i = 0; i < value.size(); i++) {
                    printFieldKeys(value.get(i), path + "[" + i + "]");
                }
            } else {
                printFieldKeys(value, path);
            }

        }
    }
final JsonNode rootNode=mapper.readValue(jon,JsonNode.class);
打印字段键(rootNode,“$”;
私有静态void打印字段键(JsonNode根节点、字符串父节点){
最终迭代器fieldIt=rootNode.fields();
while(fieldIt.hasNext()){
最终条目next=fieldIt.next();
最终JsonNode值=next.getValue();
最终字符串路径=父级+““+next.getKey();
if(value.isValueNode()){
System.out.println(路径+“=”+value.asText());
}否则{
System.out.println(路径);
}
if(value.isArray()){
对于(int i=0;i
看看这个库:


我相信它正是你想要的

使用类似Jackson的库:你找到解决方案了吗?我看过了,我认为它能够通过提供的路径字符串读取和反序列化JSON,但没有找到如何获取结构中给定节点的路径。真的吗?阅读我阅读的文档,您可以将其配置为返回匹配元素的路径。您是否看到文档的这一部分: