Java 如何获取JSON路径?
给定一个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
{
"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,但没有找到如何获取结构中给定节点的路径。真的吗?阅读我阅读的文档,您可以将其配置为返回匹配元素的路径。您是否看到文档的这一部分: