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

Posted

技术标签:

【中文标题】使用 Groovy 将 json 附加到现有的 json 文件中【英文标题】:Append json into existing json file using Groovy 【发布时间】: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"
    
  
]

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

【问题讨论】:

【参考方案1】:

生成json前需要合并map:

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

【讨论】:

谢谢你,以为合并它们会很简单。但是它仍然不完全存在,为什么它将整个 json 包装起来,好像它是一个数组 [ ] ?

以上是关于使用 Groovy 将 json 附加到现有的 json 文件中的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Excel 转换为 JSON 并将其附加到现有的 JSON 文件?

Jackson 不会将新的 JSON 对象附加到现有的 Json 文件中

附加到现有的json文件

如何使用附加模式将音频录制到现有的音频文件中?

如何将指标附加到现有的 Lambda 日志组?

使用 pandas 将不同位置的行附加到现有的 csv 文件