首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Groovy创建json对象并将json追加到现有json文件中。

使用Groovy创建json对象并将json追加到现有json文件中。
EN

Stack Overflow用户
提问于 2022-11-17 13:57:03
回答 1查看 32关注 0票数 0

我对Groovy (和json)还很陌生,并且很有可能获得预期的解决方案。但却无法达到目的。我要做的是解析一个现有的json文件,然后添加/追加其他条目,如下例所示:

原始Json文件:

代码语言:javascript
复制
{
    "stack-1": {
        "name": "demo",
        "createdAt": "11:00 PM",
        "owner": "sarva",
        "dbName": "DB"
    }
}

来自Json的新Json内容:

代码语言:javascript
复制
{
    "stack-2": {
        "name": "demo-2",
        "createdAt": "15:00 PM",
        "owner": "bhowma",
        "dbName": "DB2"
    }
}

合并后的预期Json输出:

代码语言:javascript
复制
{
    "stack-1": {
        "name": "demo",
        "createdAt": "11:00 PM",
        "owner": "sarva",
        "dbName": "DB"
    },
    "stack-2": {
        "name": "demo-2",
        "createdAt": "15:00 PM",
        "owner": "Bhowma",
        "dbName": "DB2"
    }
}

在下面的代码片段中,我尝试了许多变体,但仍然没有为我的预期输出获得正确的格式。

代码语言:javascript
复制
import groovy.json.*
def number = 2
def name = "demo-2"
def createdAt = "15:00 PM"
def owner = "bhowma"
def db_name = "DB2"

// here I am loading an old json file
def jsonSlurper = new JsonSlurper()
def json = jsonSlurper.parse(new File('/tmp/sarva.json'))

// Here I am building a new JSON with the above parameters.
def builder = new JsonBuilder()
def root = builder "stack-$number": [name: name, createdAt: createdAt, owner: owner, dbName: db_name]
def newJson = jsonSlurper.parseText(builder.toPrettyString())
println(json.getClass())
println(newJson.getClass())
print json
print builder

目前,我可以从json & builder.toPrettyString()及其类中看到下面的o/p。但我无法按计划合并它们。我希望这个合并可以用于我传递的尽可能多的json对象。

当前输出显示在下面

代码语言:javascript
复制
class groovy.json.internal.LazyMap
class groovy.json.internal.LazyMap
[stack-1:[createdAt:11:00 PM, dbName:DB, name:demo, owner:sarva]]
{"stack-2":{"name":"demo-2","createdAt":"15:00 PM","owner":"Bhowma","dbName":"DB-2"}}

任何帮助分类这将是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-17 14:28:52

忽略您的示例是不完整的,您已经将原始JSON解析为Map,所以只需将新元素添加到映射中即可。

代码语言:javascript
复制
// Here I am building a new Map with the above parameters.
json += ["stack-$number": [name: name, createdAt: createdAt, owner: owner, dbName: db_name]]

然后从这张地图上打印出新的json

代码语言:javascript
复制
println new JsonBuilder(json).toPrettyString()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74476700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档