如何从Json树获取特定节点而不迭代整个列表

时间:2016-06-29 02:36:23

标签: java json jackson nodes

考虑以下Json结构:

concat

使用JsonNode,是否可以通过poLineNumber属性值为3来获取整个子节点{id through quantity},而无需迭代所有节点并返回匹配?我需要使用JsonPath吗?

1 个答案:

答案 0 :(得分:1)

您可以查看JsonPath。 您可以先使用ObjectMapper从给定的json字符串创建Map<String, Object>,然后读取它并评估JsonPath表达式。例如:

ObjectMapper mapper = new ObjectMapper();
Map<String, Object> mappedObject = mapper.readValue(jsonString, Map.class);

// Evaluate that expression
Object result = JsonPath.read(mappedObject, "$.ubds[?(@.metaData.lineInfo.poLineNumber==3)]");

或直接用JsonPath读取json字符串:

Object result = JsonPath.parse(jsonString).read("$.ubds[?(@.metaData.lineInfo.poLineNumber==3)]");