我对Groovy (和json)还很陌生,并且很有可能获得预期的解决方案。但却无法达到目的。我要做的是解析一个现有的json文件,然后添加/追加其他条目,如下例所示:
原始Json文件:
{
"stack-1": {
"name": "demo",
"createdAt": "11:00 PM",
"owner": "sarva",
"dbName": "DB"
}
}来自Json的新Json内容:
{
"stack-2": {
"name": "demo-2",
"createdAt": "15:00 PM",
"owner": "bhowma",
"dbName": "DB2"
}
}合并后的预期Json输出:
{
"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"
}
}在下面的代码片段中,我尝试了许多变体,但仍然没有为我的预期输出获得正确的格式。
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对象。
当前输出显示在下面
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"}}任何帮助分类这将是非常感谢的。
发布于 2022-11-17 14:28:52
忽略您的示例是不完整的,您已经将原始JSON解析为Map,所以只需将新元素添加到映射中即可。
// Here I am building a new Map with the above parameters.
json += ["stack-$number": [name: name, createdAt: createdAt, owner: owner, dbName: db_name]]然后从这张地图上打印出新的json
println new JsonBuilder(json).toPrettyString()https://stackoverflow.com/questions/74476700
复制相似问题