我正在尝试从httpResponse(以JSON形式)中提取两组信息-
1.位置
2.水果=苹果且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)
答案 0 :(得分: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()
答案 1 :(得分:0)
可能您需要httpResponse.getData()或仅httpResponse.data来访问响应数据有效负载。如果已根据Content-Type正确解析了响应,则此数据可能已经在地图中,在这种情况下,您无需使用JsonSlurper。如果数据是json字符串,则使用JsonSlurper。
无论如何,你都会有类似的东西
def cities = responseData.details.findAll{it.fruit=="Apple" && it.luckyNumber==10}