Доступ к значениям в JSON на основе условия с помощью Groovy - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь извлечь два набора информации из httpResponse (в форме JSON) -
1. Местоположение
2. город, где фрукты = Apple и luckyNumber = 10.

{
    "userInformation": {
        "Name": "John",
        "Location": "India"
    },
    "details": [
        {
            "fruit": "Apple",
            "color": "Red",
            "city": "New Delhi",
            "luckyNumber": 10
        },
        {
            "fruit": "Banana",
            "color": "yellow",
            "city": "Goa",
            "luckyNumber": 12
         }
         ]
         }

Для извлечения Местоположения я попробовал следующий код:

def slurper = new JsonSlurper().parseText(httpResponse)

userLocation = slurper.userInformation.Location

Это дает мне ошибку -

javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: groovy.json.JsonSlurper.parseText() is applicable for argument types: (java.util.LinkedHashMap) values: [[statusCode:200, reason:OK, headers:[Access-Control-Allow-Credential:true, ...], ...]] Possible solutions: parseText(java.lang.String), parse([B), parse([C), parse(java.io.File), parse(java.io.InputStream), parse(java.io.Reader) 

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Вероятно, вам нужен httpResponse.getData () или просто httpResponse.data для доступа к данным данных ответа.Эти данные могут быть уже в карте, если ответ был правильно проанализирован на основе Content-Type, в этом случае вам не нужно использовать JsonSlurper.Если данные являются строкой json, используйте JsonSlurper.

В любом случае у вас будет что-то вроде

def cities = responseData.details.findAll{it.fruit=="Apple" && it.luckyNumber==10}
0 голосов
/ 10 октября 2018

ошибка

No signature of method: groovy.json.JsonSlurper.parseText() is applicable for
       argument types: (java.util.LinkedHashMap)
Possible solutions: parseText(java.lang.String), ...

означает, что вы пытаетесь передать Map (httpResponse) в JsonSlurper.parseText(), когда этот метод принимает строку.

Найдите, как получить тело ответа какстрока, а затем вы можете использовать JsonSlurper.parseText ()

...