簡體   English   中英

使用Groovy根據條件訪問JSON中的值

[英]Access values in JSON based on a condition using Groovy

我正在嘗試從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) 

錯誤

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()

可能您需要httpResponse.getData()或僅需要httpResponse.data來訪問響應數據有效負載。 如果已根據Content-Type正確解析了響應,則此數據可能已經在地圖中,在這種情況下,您無需使用JsonSlurper。 如果data是json字符串,則使用JsonSlurper。

無論如何你都會有類似的東西

def cities = responseData.details.findAll{it.fruit=="Apple" && it.luckyNumber==10}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM