Будьте уверены - JsonPath - мне нужно два значения для извлечения одновременно в зависимости от условия

Я сталкиваюсь с трудностями при извлечении значений с помощью JsonPath. Вот мой JSON,

    applications:[
    {
    "ab": 123,
    "isReady": true,
    "proId": 234
    },
    {
    "ab": 345,
    "isReady": false,
    "proId": 098
    },
    {
    "ab": 332,
    "isReady": true,
    "proId": 100
    }
]

Я хотел извлечь значения "ab" и "proId", когда значение "isReady" равно true. И как только это будет сделано, мне нужно построить ниже JSON с вышеупомянутыми значениями. Пример ниже,

[
{  
   "ab": 332,
   "proId": 100
},
{
    "ab": 123,
    "proId": 234
}
]

Я могу только извлечь отдельные значения, как показано ниже,

List<Integer> abList = jsonFindAllUserJobApplicantsResponse.get("applications.findAll{ it.isReady == true}.ab");

List<Integer> proIdList = jsonFindAllUserJobApplicantsResponse.get("applications.findAll{ it.isReady == true}.proId");

Не могли бы вы помочь в этом сценарии о том, как извлечь и построить желаемый результат?

Большое спасибо за вашу помощь.

1 ответ

Попробуй это:

    ArrayList<Map<String,?>> result = jsonFindAllUserJobApplicantsResponse.get("applications.findAll{ it.isReady == true}");
    try {
        // use Jackson library to convert map to json string
        new ObjectMapper().writeValueAsString(result);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }

ссылка: https://james-willett.com/2017/05/rest-assured-gpath-json/

Другие вопросы по тегам