使用Groovy将json附加到现有的json文件中

时间:2018-01-25 15:22:59

标签: json file groovy merge append

我对Groovy(和json)非常陌生,正在玩这个代码试图让它工作,几乎但不是那么到达并需要一些帮助......

所以我尝试做的是解析现有的json文件,然后添加/追加其他条目,如下例所示:

Original Json

{
  "organisation": "company",
  "modules": [
    {
        "description": "Module 1",
        "type": "Q1",
    },
    {
        "description": "Module 2",
        "type": "Q2",
    },
    {
        "description": "Module 3",
        "type": "Q3",
    }
  ]
}

New Json

modules {
        description 'Module 4'
        type 'TEST'
}

预期最终产出

{
  "organisation": "company",
  "modules": [
    {
        "description": "Module 1",
        "type": "Q1",
    },
    {
        "description": "Module 2",
        "type": "Q2",
    },
    {
        "description": "Module 3",
        "type": "Q3",
    },
    {
        "description": "Module 4",
        "type": "TEST",
    }
  ]
}

我已经尝试了以下代码段的许多变体,但仍然没有为我的预期输出获得正确的格式

def inputFile = file("modules.json")
def outputFile = new File("modules.new.json")
def json = new JsonSlurper().parseText(inputFile.text)

println "This is our original input JsonSlurper: \n"
println JsonOutput.prettyPrint(JsonOutput.toJson (json))

def builder = new JsonBuilder()
def jsonNew = builder {
    modules {
        description 'Module 4'
        type 'TEST'
      }
    }

println "This is our combined output JsonBuilder: \n"
println JsonOutput.prettyPrint(JsonOutput.toJson ([json, jsonNew]))

结果如下:

[
  {
    "organisation": "company",
    "modules": [
        {
            "description": "Module 1",
            "type": "Q1"
        },
        {
            "description": "Module 2",
            "type": "Q2"
        },
        {
            "description": "Module 3",
            "type": "Q3"
        }
    ]
  },
  {
    "modules": {
        "description": "Module 4",
        "type": "TEST"
    }
  }
]

任何帮助对此进行排序都将非常感激。

1 个答案:

答案 0 :(得分:0)

您需要在生成json之前合并地图:

json.modules = json.modules << jsonNew.modules
println JsonOutput.prettyPrint(JsonOutput.toJson(json))