【问题标题】:Append json into existing json file using Groovy使用 Groovy 将 json 附加到现有的 json 文件中
【发布时间】:2018-07-04 21:44:25
【问题描述】:

我对 Groovy(和 json)还很陌生,正在玩弄这段代码试图让它工作,几乎但还没有完全到达那里,需要一点帮助......

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

原始Json

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

新的 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",
    }
  ]
}

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

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"
    }
  }
]

任何帮助排序这将不胜感激。

【问题讨论】:

    标签: json file groovy merge append


    【解决方案1】:

    生成json前需要合并map:

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

    【讨论】:

    • 谢谢你,以为合并它们会很简单。但是它仍然不完全存在,为什么它将整个 json 包装起来,好像它是一个数组 [ ] ?
    猜你喜欢
    • 2016-08-21
    • 2019-07-23
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多