Я пытаюсь проанализировать ответ JSON с повторяющимися объектами с помощью JsonSlurper для сравнения с запросом JDBC. Однако я хочу сравнивать только те объекты, в которых существуют определенные значения.
Если бы у меня был ответ, который выглядит следующим образом, как бы я анализировал только те объекты, где эта страна равна США или Канаде, и поэтому игнорировал бы что-нибудь еще?
{
"info": [{
"name": "John Smith",
"phone": "2125557878",
"country": {
"value": "USA"
}
},
{
"name": "Jane Smith",
"phone": "2125551212",
"country": {
"value": "USA"
}
},
{
"name": "Bob Jones",
"phone": "4165558714",
"country": {
"value": "Canada"
}
},
{
"name": "George Tucker",
"phone": "4454547171",
"country": {
"value": "UK"
}
},
{
"name": "Jean Normand",
"phone": "4454547171",
"country": {
"value": "France"
}
}]
}
Это то, что у меня есть в Groovy:
def jsonResponse = context.expand('${RESTRequest#Response}')
def parsedJson = new JsonSlurper().parseText(jsonResponse)
def info = parsedJson.info
def jsonDataObjects = []
info.each { json ->
jsonDataObjects.add(Model.buildJSONData(json))
}
Я создаю коллекцию элементов, которые мне нужно сравнить с базой данных. Как добавить только ту коллекцию, где info.country.value = США или Канада?
Я пытался использовать .findAll вот так, просто чтобы проверить, могу ли я настроить фильтр по одной из стран:
def info = parsedJson.info.country.findAll{it.value == "USA"}
Но, когда я это делаю, сохраняется только поле значения. Я теряю имя и телефон от разбора.
Заранее спасибо за любую помощь.