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]
$.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);
            }

        }
    }

最佳答案

看看这个图书馆:https://github.com/jayway/JsonPath

我相信它完全符合您的要求。 :)

关于java - 你怎么能得到JSON路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31149396/

相关文章:

c# 解析 json 日期?

javascript - 调用方法失败

java - 使用正则表达式在 Java 中提取日期的问题

java - 什么时候将 JDBC 与 lucene 索引结合使用是个好主意?

java - 为什么 IntelliJ 的检查员会突出显示这段代码?

java - 标准 JSON 表示

jquery - 使用 json 将选项标记为在多选中选择

java - 无效操作 : result set is closed. ERRORCODE=-4470,SQLSTATE=null

java - IE 10 中的 JApplet 问题

c# - 如何更新 JSON 字符串中的属性值?