如何使用jackson解析json中的动态子节点?

时间:2016-06-29 21:29:40

标签: json regex parsing jackson

使用下面的代码,我可以使用Jackson解析JSON中的子节点。

JsonNode recordNode = records.get(i).path("values").get(j).path("subValues1").path("subValues2").path("subValues3");

for(int k=0; k<recordsDimensions.size()-1;k++){
JsonNode recordNode1 = records.get(i).path("values").get(j).path("subValues1").path("subValues2").path("subValues3").get(k).path("subValues4");
}

但是,我想使用Jackson和正则表达式或类似的东西来解析JSON中的子节点。

ex:

for(int k=0; k<recordsDimensions.size()-1;k++){
JsonNode recordNode1 = records.get(i).path("values").get(j).path("subValues1").path("subValues2").**path("$.subValues3[?(@.testKey=='testValue')]")**.path("subValues4");
}

我遇到的问题是path("$.subValues3[?(@.testKey=='testValue')]")无效。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以通过at()方法使用JsonPointer表达式:

String value = records.at("/1/values/2/subValues1/subValues2").asString();

如果你想要完整的表达式语言,或许有一些软件包可以做到这一点:杰克逊项目专注于通过Streaming API,数据绑定和基本树模型进行低级访问。