【问题标题】:Map string arraylist getting key and value映射字符串arraylist获取键和值
【发布时间】:2020-07-15 05:42:09
【问题描述】:

从 API 响应中,我正在解析 JSON

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

下面是parsedBiblio的输出

{"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&lt;string,List&lt;string&gt; 格式,所以我将按以下格式声明内部映射

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

我收到此错误

无法将具有类“java.util.ArrayList”的对象“[{Address=xxx, CA (US), Name=abcd Inc.}]”转换为类“java.util.Map”,原因是:groovy.lang .GroovyRuntimeException:找不到匹配的构造函数:java.util.Map(groovy.json.internal.LazyMap)

【问题讨论】:

    标签: java json groovy hashmap


    【解决方案1】:

    我认为您应该尝试按以下方式检索申​​请人:

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

    您可以按如下方式获取地图中的键和值:

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

    【讨论】:

    • 谢谢,如何检索该映射中的键和值?
    【解决方案2】:

    不明白为什么要双重解析字符串

    如果 responseBody 是一个字符串,你可以这样写:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多