考虑以下 Json 结构:
{ "ubds": [
{
"id": "33",
"metaData": {
"lineInfo": {
"poNumber": "PO_123",
"poLineNumber": 1
}
},
"confirmedDeliveryDate": "2016-05-26T16:15:51",
"quantity": 99
},
{
"id": "34",
"metaData": {
"lineInfo": {
"poNumber": "PO_123",
"poLineNumber": 2
}
},
"confirmedDeliveryDate": "2016-05-26T16:15:51",
"quantity": 99
},
{
"id": "35",
"metaData": {
"lineInfo": {
"poNumber": "PO_123",
"poLineNumber": 3
}
},
"confirmedDeliveryDate": "2016-05-26T16:15:51",
"quantity": 99
}]}
使用 JsonNode,有没有一种方法可以获取 poLineNumber 属性值为 3 的整个子节点 {id through amount},而无需迭代所有节点并返回匹配项?我需要为此使用 JsonPath 吗?
最佳答案
您可以查看JsonPath 。
您可以先使用ObjectMapper
创建 Map<String, Object>
从给定的 json 字符串中读取它并计算 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)]");
关于java - 如何从 Json Tree 获取特定节点而不迭代整个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38089420/