如何使用groovy创建JSON嵌套键

如何使用groovy创建JSON嵌套键,groovy,Groovy,下面是创建JSON的代码 import groovy.json.*; def input='{\"env\": {\"a\": 1,\"b\": 2,\"c\": 3,\"d\": 4}}'; def jsonSlurper = new JsonSlurper(); def inputJson= jsonSlurper.parseText(input); def mapping = jsonSlurper.parseText("{}"); def NO2 = jsonSlurper.pa

下面是创建JSON的代码

import groovy.json.*;

def input='{\"env\": {\"a\": 1,\"b\": 2,\"c\": 3,\"d\": 4}}';
def jsonSlurper = new JsonSlurper();
def inputJson= jsonSlurper.parseText(input);

def mapping = jsonSlurper.parseText("{}");


def NO2 = jsonSlurper.parseText("{}");
def CO2 = jsonSlurper.parseText("{}");
def SO2 = jsonSlurper.parseText("{}");
def CO = jsonSlurper.parseText("{}");

NO2["NO2"] = inputJson.env.c
mapping["ENVIRONMENT"] = NO2
CO2["CO2"] = inputJson.env.a
mapping["ENVIRONMENT"] = CO2
SO2["SO2"] = inputJson.env.d
mapping["ENVIRONMENT"] = SO2
CO["CO"] = inputJson.env.b
mapping["ENVIRONMENT"] = CO


def finalJson = new JsonBuilder(mapping).toPrettyString();

println finalJson
在上面的代码中,它创建的JSON如下所示:

{
    "ENVIRONMENT": {
        "CO": 2
    }
}
但我不明白为什么它忽略了二氧化碳、二氧化氮和二氧化硫

我想要的输出:

{
    "ENVIRONMENT": {
        "CO2": 1,
        "CO":2,
        "NO2":3,
        "SO2":4
    }
}
有没有办法通过使用这个方法我可以得到这个JSON


谢谢:)

在java中,地图只能有唯一的键。通常最后的
put
操作获胜

...
mapping["ENVIRONMENT"] = SO2
mapping["ENVIRONMENT"] = NO2
另外,您的代码是hor。。真是多余

做事的方法是:

import groovy.json.*

def input='{"env": {"a": 1,"b": 2,"c": 3,"d": 4}}' // no need to escape " in single-quoted litterals

def env = new JsonSlurper().parseText( input ).env

Map out = [ ENVIRONMENT:[
  NO2:env.c,
  CO2:env.a,
  SO2:env.d,
  CO:env.b,
] ]

String finalJson = JsonOutput.toJson out 

assert '{"ENVIRONMENT":{"NO2":3,"CO2":1,"SO2":4,"CO":2}}' == finalJson

请仔细阅读您的代码。您正在多次覆盖映射[“环境”]。那么我如何添加所有键呢