簡體   English   中英

Map 字符串 arraylist 獲取鍵和值

[英]Map string arraylist getting key and value

從 API 響應中,我正在解析 JSON

String myData = jsonSlurper.parseText(responseBody)
Map parsedBiblio = jsonSlurper.parseText(myData)

下面是parsedBiblio的output

{"Data": {"AppNumber": "15671037", "CustomerNumber": "81744", "Date": "08-07-2017", "Status": "Active"}, 

 "Applicants": [{"Name": "abcd Inc.", "Address": "xxx, CA (US)"}],

下面是檢索Data鍵和對應值的代碼

Map<Object, Object> innerMap = parsedBiblio.get("Data")
for (Object objectName : innerMap.keySet()) {
   
       println("Key: " + objectName + " Value: "+ innerMap.get(objectName) +".");
 }

讓我知道如何檢索Applicants者鍵和相應的值,因為這是map<string,List<string>格式,所以我將按以下格式聲明內部映射

Map<String, List<String>> innerMapApplicant = parsedBiblio.get("Applicants")

我收到這個錯誤

Cannot cast object '[{Address=xxx, CA (US), Name=abcd Inc.}]' with class 'java.util.ArrayList' to class 'java.util.Map' due to: groovy.lang.GroovyRuntimeException:找不到匹配的構造函數:java.util.Map(groovy.json.internal.LazyMap)

我認為您應該嘗試按以下方式檢索申請人:

List<Map<String,String>> applicantList =  = parsedBiblio.get("Applicants")

您可以在 map 中獲取鍵和值,如下所示:

  for(Map<String,String> applicantMap: applicantList)
  {
       for (Object objectName : applicantMap.keySet()) 
       {
          println("Key: " + objectName + " Value: "+ applicantMap.get(objectName) +".");
       }
   }

不明白為什么要雙重解析字符串

如果 responseBody 是一個字符串,你可以這樣寫:

def json = jsonSlurper.parseText(responseBody)
println json.Data.Applicants.Name
println json.Data.Applicants.Address

暫無
暫無

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

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