Получить значение из json на основе условия, используя JsonPath - PullRequest
1 голос
/ 26 марта 2020

Я следую json -

{
"issues": [{
    "id": 200615,
    "custom_fields": [{
        "id": 166,
        "name": "Severity",
        "internal_name": null,
        "field_format": "list",
        "value": "Major"
    }, {
        "id": 167,
        "name": "Reproducibility",
        "internal_name": null,
        "field_format": "list",
        "value": "Always"
    }, {
        "id": 168,
        "name": "Resolution",
        "internal_name": null,
        "field_format": "list",
        "value": "open"
    }]
}]

}

Из этого json Я хочу получить значение вопросов -> custome_fields -> значение, где id - 167 и ожидаемое значение - Всегда (167 может быть в любой позиции в json, следовательно, не может жестко его кодировать)

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

jsonPath.get("issues[0].custom_fields[?(@.id == '167')].value[0]")

результаты в ошибку -

java.lang.IllegalArgumentException: Invalid JSON expression:
Script1.groovy: 1: expecting EOF, found '[' @ line 1, column 50.
   Object.issues[0].custom_fields[?(@.id ==

1 Ответ

0 голосов
/ 26 марта 2020

Я получаю ту же ошибку, что и вы, и не знаю, почему.

Однако вы можете достичь той же цели, используя findAll json метод пути, подобный этому:

issues[0].custom_fields.findAll { it.id == 167 }.value[0]

Распечатывается: Always

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...