在groovy脚本中如何动态构建、解析和构建JSON

在groovy脚本中如何动态构建、解析和构建JSON,groovy,Groovy,假设我有这样的json输入和输出负载 { "env": { "CO2": "2", "NO2": "3" } } 输出: { "payload": { "Environment": { "carbon-di-oxide": "2", "nitrogen-di-oxide": "3" } } } 假设映射json为: { "mapping": { "payload.Environment.carbon-di-o

假设我有这样的json输入和输出负载

{
  "env": {
    "CO2": "2",
    "NO2": "3"
  }
}
输出:

{
  "payload": {
    "Environment": {
      "carbon-di-oxide": "2",
      "nitrogen-di-oxide": "3"
    }
  }
}
假设映射json为:

{
  "mapping": {
    "payload.Environment.carbon-di-oxide": "env.co2",
    "payload.Environment.nitrogen-di-oxide": "env.co"
  }
}
因此,基于映射json,我如何创建动态json。 我写过这样的剧本:

import groovy.json.*;

def input='{\"env\": {\"CO2\": \"2\",\"NO2\": \"3\"}}';
def jsonSlurper = new JsonSlurper();
def finalJson = jsonSlurper.parseText('{}') ;
def inputJson= jsonSlurper.parseText(input) ;
finalJson["carbon-di-oxide"]=inputJson.env.CO2;
finalJson["nitrogen-di-oxide"]=inputJson.env.NO2;
def content=new JsonBuilder( finalJson).toPrettyString();
println("content-->"+content)

但在这里,我如何动态传递payload.Environment.carbon-di-oxide之类的嵌套输出,并基于javascript中类似json的映射创建输出。首先,将基于json映射生成groovy脚本。然后输入将被馈送,以产生预期的输出。

您可以同时拆分映射json的键和值。并遍历结果列表以收集值/创建输出结构

以下内容基于您的示例代码。 请注意,我已经将您的映射修复为大写,其中您的输入是大写和从CO到NO2的二氧化氮

产出将是

{
    "payload": {
        "Environment": {
            "carbon-di-oxide": "2",
            "nitrogen-di-oxide": "3"
        }
    }
}
{
    "payload": {
        "Environment": {
            "carbon-di-oxide": "2",
            "nitrogen-di-oxide": "3"
        }
    }
}