首页 > 解决方案 > 使用 groovy 在 map 下添加新的键值对

问题描述

{
"map": {
    "key1": [3,12,13,11],
    "key2": [21,23],
    "key3": [31,32,33]
}}

我有这个 JSON。类似于 key1 或 key2 我想使用 groovy 向这个 json 添加新的密钥对。我正在使用 JsonSlurper()。

def mJson = new File(MAPPINGJSON).text;
def mJsonObject = parser.parseText(mJson);
def list=  mJsonObject.map;
def keyFound= false;
for (item in list)
{
    if (item.key == templateKey)
    {
        def values = item.value;
        values.add(<some value>);
        item.value= values;
        keyFound = true;
        break;
    }
    keyFound = false;
}
if(!keyFound)
{
    println "Key not found";
 //   How to add new key pair?
}

标签: groovyjsonslurper

解决方案


list[templateKey] = [<some value>]by daggett 是一种方法,但您也可以使用单衬里来解决问题。

def list=  mJsonObject.map;
list.computeIfAbsent(templateKey, { [] }).add(templateValue)

它使用一个函数来提供地图的默认值。


推荐阅读