簡體   English   中英

Groovy:將 json 中的值添加到地圖

[英]Groovy: Add values from json to a map

我有以下json。 如何創建一個以namekeyidvalue的動態映射。 並刪除key中具有模式 (~/ ([0-9])$/) 的任何內容,例如(2)(3)

我的代碼:

transitionsobj = jiraGetIssueTransitions(idOrKey: Jira_id)
echo prettyPrint(toJson(transitionsobj.data)) \\This prints the below json

 def fruitsMap = [:].withDefault{[]}

 transitionsobj.each {
   fruitsMap.put(transitionsobj.data.fruits.name, transitionsobj.data.fruits.id)
  }

 println "fruitsMap: ${fruitsMap}"
 println(fruitsMap.keySet());
 println(fruitsMap.values());
 println "Id of Banana is: ${fruitsMap['Banana']}"

JSON 文件:

   { 
"expand":"fruits",
"fruits":[ 
    { 
        "id":"131",
        "name":"Apple (2)",
        "to":{ 
            "description":"",
            "name":"Apple",
            "id":"13895"
        }
    },
    { 
        "id":"151",
        "name":"Mango",
        "to":{ 
            "description":"",
            "name":"Mango",
            "id":"13896"
        }
    },
    { 
        "id":"161",
        "name":"Banana",
        "to":{ 
            "description":"",
            "name":"Banana",
            "id":"10700"
        }
    }
]
}

電流輸出

fruitsMap: [[Apple (2), Mango, Banana]:[131, 151, 161]]

[Apple (2), Mango, Banana]

[131, 151, 161]

Id of Banana is: []

期望輸出:

   fruitsMap: [
    Apple : 131 
    Mango : 151
    Banana : 161
   ]

   [Apple, Mango, Banana]

   [131, 151, 161]

   Id of Banana is: 161

我認為而不是

def fruitsMap = [:].withDefault{[]}

transitionsobj.each {
    fruitsMap.put(transitionsobj.data.fruits.name, transitionsobj.data.fruits.id)
}

您只需要:

def fruitsMap = transitionsobj.data.fruits.collectEntries { 
    [it.name.replaceAll(/(?:\s+).*/, ''), it.id]
}

暫無
暫無

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

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