如何使用JsonPath从json查找给定键的值?

问题描述 投票:0回答:1

我进行了很多搜索,但没有答案帮助了我想要的东西。

[{
    "activity_id": 1,
    "created_date": 104,
    "note_id": 1
}, {
    "activity_id": 2,
    "created_date": 101,
    "note_id": 2
}, {
    "activity_id": 3,
    "created_date": 105,
    "note_id": 3
}, {
    "activity_id": 4,
    "created_date": 102,
    "note_id": 4
}, {
    "activity_id": 5,
    "created_date": 103,
    "note_id": 5
}]

DocumentContext dc =  JsonPath.parse(data);

我已经尝试获取键d.read(key),但由于它提供了一组值,因此无法正常工作。

如何获取特定键的所有值的数组?添加更多是一回事。我可以使用d.read("$..created_date")获取所有值的数组但是我必须使用通用函数,因此我将键名作为参数,并且必须找到该给定键的所有值。

例如:created_date:[101, 102, 103..]

我也尝试过使用杰克逊。除此以外,我无法使用其他图书馆。

任何帮助将不胜感激。

java json parsing jackson jsonpath
1个回答
0
投票
希望此代码满足您的要求

代码:

import java.util.List; import com.jayway.jsonpath.JsonPath; public class TestJsonPath { public static void main(String[] args) { testJsonPath(); } private static void testJsonPath() { String json = "{\"list\" : { \"time\": [{\"activity_id\":1,\"created_date\":104,\"note_id\":1},{\"activity_id\":2,\"created_date\":101,\"note_id\":2},{\"activity_id\":3,\"created_date\":105,\"note_id\":3},{\"activity_id\":4,\"created_date\":102,\"note_id\":4},{\"activity_id\":5,\"created_date\":103,\"note_id\":5}] } }"; System.out.println(json); List<Object> createdDate = JsonPath.read(json, "$.list.time[*].created_date"); System.out.println(createdDate); } }

运行结果

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.