Groovy 中的 JSONBuilder 添加了错误的引号
Posted
技术标签:
【中文标题】Groovy 中的 JSONBuilder 添加了错误的引号【英文标题】:JSONBuilder in Groovy adds wrong quotation marks 【发布时间】:2022-01-22 20:32:00 【问题描述】:我正在尝试读取 json 文件,编辑其中的某些部分,然后将其解析回 json 文件。目标是改变汇合页面的价值。我在 Jenkins 管道中使用 groovy 代码。这里是:
def changeValue()
def json_map = readJSON file: '/tmp/updater.json'
def body_content = '"storage":"value":'
body_content += '"<h1>test</h1>"'
body_content += ',"representation":"storage"'
json_map.body = body_content
json_as_string = new JsonBuilder(json_map).toPrettyString().replaceAll("\\\\", "") // It also adds unneccesary escapes
print json_as_string
这是updater.json的内容:
"id":"redacted",
"type":"page",
"title":"redacted",
"space":"key":"redacted",
"body":"storage":"value":"<h1>wrong</h1>","representation":"storage",
"version":
"number":6
这就是我得到的:
"id": "redacted",
"type": "page",
"title": "redacted",
"space":
"key": "redacted"
,
"body": ""storage":"value":"<h1>test</h1>","representation":"storage"",
"version":
"number": 6
如您所见,它在正文块周围添加了引号。我怎样才能摆脱它们?
【问题讨论】:
【参考方案1】:结果如预期,您将body
更新为新的String
。
如果您只想更新 value
,请根据 this answer 使用它
导入 groovy.json.JsonBuilder 导入 groovy.json.JsonSlurper
def jsn = """
"id":"redacted",
"type":"page",
"title":"redacted",
"space":"key":"redacted",
"body":"storage":"value":"<h1>wrong</h1>","representation":"storage",
"version":
"number":6
"""
def slp= new JsonSlurper().parseText(jsn)
bld.content.body.storage.value = '<h1>test</h1>'
println(bld.toPrettyString())
结果
"id": "redacted",
"type": "page",
"title": "redacted",
"space":
"key": "redacted"
,
"body":
"storage":
"value": "<h1>test</h1>",
"representation": "storage"
,
"version":
"number": 6
【讨论】:
非常感谢。我仍在试图弄清楚如何正确处理 JSON 等。你帮了我很多!以上是关于Groovy 中的 JSONBuilder 添加了错误的引号的主要内容,如果未能解决你的问题,请参考以下文章
GroovyGroovy 对象转为 json 字符串 ( 使用 JsonBuilder 进行转换 | 使用 JsonOutput 进行转换 | 将 json 字符串格式化输出 )
Groovy集合遍历 ( 操作符重载 | 集合中的 “ << “ 操作符重载 | 使用集合中的 “ << “ 操作符添加一个元素 | 使用集合中的 “ << “ 操作符添加一个集合 )