Я пользуюсь уверенностью, чтобы сделать пост-вызов API и получить ответ обратно в теле.Затем мне нужно взять этот ответ и выбрать конкретные значения полей и сохранить их в виде строк, чтобы потом сравнить их с другими строковыми объектами.Я написал jsonpath просто отлично, чтобы получить значения полей верхнего уровня (например, id, статус, тип, страну и т. Д.), Но когда мне нужно попасть внутрь одного из возвращаемых объектов в массиве json, я не могу правильно получить формат дляметод get ().
Вот пример возвращаемого Json:
{
"id": "ABC123",
"status": "NEW",
"type": "PERSONAL",
"country": "United States",
"totalBalances": {},
"availableBalances": {},
"fields": [
{
"fieldType": "mobilephone",
"value": "14216904425",
"fieldId": "personalMobileNumber"
},
{
"fieldType": "email",
"value": "user12345@work.com",
"fieldId": "personalEmail"
},
{
"fieldType": "STRING",
"value": "John Doe",
"fieldId": "individualName"
}
]
}
Вот путь json, который я пытался отформатировать, чтобы он соответствовал get ()метод, но я получаю исключение Illegal Argument каждый раз (java.lang.IllegalArgumentException: неверное выражение JSON), я пытаюсь заставить его работать.В основном мне нужно определить правильный объект в массиве и получить правильное значение поля.В этом случае это поле fieldId, и я хочу, чтобы значение поля «значение» (Джон Доу) было таким, чтобы я мог сохранить его в объект String:
JsonPath pathToAccountName = response.jsonPath();
String accountName = pathToAccountName.get("fields[?(@.fieldId=='individualName')].value")
Я использовал https://jsonpath.curiousconcept.com/ дляполучение VALID JSON-пути:
$.fields[?(@.fieldId=='individualName')].value
Но я попробовал все, чтобы преобразовать его во что-то, что примет метод get (), но безуспешно.Обыскать все посты здесь и остальные технические документы тоже не помогли.