Как найти значение данного ключа из json, используя JsonPath? - PullRequest
0 голосов
/ 16 апреля 2020

Я много искал, но ни один ответ не помог мне.

[{
    "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") Но мне нужно сделать обобщенные функции c, чтобы я взял имя ключа в качестве параметра и мне нужно найти все значения этого ключа.

Для пример: create_date: [101, 102, 103..]

Я также пытался использовать Джексона. Я не могу использовать другую библиотеку.

Любая помощь будет оценена.

1 Ответ

1 голос
/ 16 апреля 2020

Надеюсь, этот код работает для вашего требования

Код:

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);

    }

}
...