0

我正在尝试从 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) 
4

2 回答 2

0

错误

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

表示当此方法接受 String 时,您尝试将 Map( httpResponse) 传入。JsonSlurper.parseText()

查找如何将响应正文作为字符串获取,然后您可以使用 JsonSlurper.parseText()

于 2018-10-10T15:11:03.863 回答
0

可能您需要 httpResponse.getData() 或只是 httpResponse.data 来访问响应数据有效负载。如果根据 Content-Type 正确解析了响应,则此数据可能已经在地图中,在这种情况下,您不需要使用 JsonSlurper。如果数据是 json 字符串,则使用 JsonSlurper。

在任何情况下,你都会有类似的东西

def cities = responseData.details.findAll{it.fruit=="Apple" && it.luckyNumber==10}
于 2018-10-18T18:08:20.710 回答