使用下面的代码,我可以使用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')]")
无效。有什么建议吗?
答案 0 :(得分:0)
您可以通过at()
方法使用JsonPointer表达式:
String value = records.at("/1/values/2/subValues1/subValues2").asString();
如果你想要完整的表达式语言,或许有一些软件包可以做到这一点:杰克逊项目专注于通过Streaming API,数据绑定和基本树模型进行低级访问。