Groovy - разбирать JSON, где в ответе присутствуют только определенные значения - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь проанализировать ответ 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"}

Но, когда я это делаю, сохраняется только поле значения. Я теряю имя и телефон от разбора.

Заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 30 августа 2018

Вы пробовали

def info = parsedJson.info.findAll{it.country.value == "USA"}

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