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

Java 如何使用JsonPath从json中查找给定键的值?,java,json,parsing,jackson,jsonpath,Java,Json,Parsing,Jackson,Jsonpath,我搜索了很多,但没有答案帮助我找到想要的 [{ "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":

我搜索了很多,但没有答案帮助我找到想要的

[{
    "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);
我曾尝试获取key
d.read(key)
,但由于它提供了一个值数组,所以没有成功

如何获取特定键的所有值的数组?还有一件事需要补充。我可以使用
d.read($…created\u date”)
但是我必须生成泛型函数,所以我将把键名作为参数,并且我必须找到给定键的所有值

例如:创建日期:
[101、102、103..]

我也试过用杰克逊。我不能使用除此之外的库


任何帮助都将不胜感激。

希望此代码能满足您的要求

代码:

import java.util.List;
导入com.jayway.jsonpath.jsonpath;
公共类TestJsonPath{
公共静态void main(字符串[]args){
String key=“创建日期”;
testJsonPath(key);
}
私有静态void testJsonPath(字符串键){
目前,一个“创建的”创建的日期:104,“笔记的id”目前,”,”笔记的id目前:104,,“笔记的id”1:1,,:1},1,,,,{“活动的id”id目前:1,2,,:2,,,,“创建的日期”目前:2,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,id \“:5}]}}”;
System.out.println(json);
List createdDate=JsonPath.read(json,String.format(“$.List.time[*].%s”,key));
System.out.println(createdDate);
}
}

感谢您的回复。我使用$…created\u date找到了这些值。我也更新了这个问题。但我会从参数中获取键值,所以我不知道会有什么,它可能是note\u id、activity\u id或created_date@MaheshChand使用此方法获取比较键和值,一旦获得正确的键值匹配,在方法上写入并将该键传递给“JsonPath.read(json,$.list.time[*])再次感谢,但这是我从第三方API获得的JSON。我不能修改它。所以你能帮我而不用花时间和时间吗。甚至我也能找到d.key($…created_date)。嘿,谢谢你帮了我很多忙。我找到了一个办法。修改你的答案,我会给你分数。d、 read(String.format(“$..%s”,sortingKey))sortingKey是保存该值的键。
import java.util.List;

import com.jayway.jsonpath.JsonPath;

public class TestJsonPath {

    public static void main(String[] args) {
        String key = "created_date";
        testJsonPath(key);
    }

    private static void testJsonPath(String key) {

        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, String.format("$.list.time[*].%s", key));
        System.out.println(createdDate);

    }

}