我正在使用JsonBuilder创建一个新的Json对象。另外,我必须逃避控制和特殊字符。
因此我正在使用JsonOutput.toJson,它会添加一个额外的“content”元素。
示例XML输入:
<?xml version="1.0" encoding="utf-8"?>
<TestRequest>
<Note>test note....ÄäÜü ß / $ % § "</Note>
<Note2>This is another note. here comes the Zeilenumbruch...bruch
...hier geh's weiter
</Note2>
</TestRequest>
样本编码:
class Mapping_41_Test_Control_Chars {
static main(args) {
def in_xml = new XmlSlurper().parse("./test/Sample_Control_Character.xml")
def jsonBuilder = new JsonBuilder()
jsonBuilder{
note in_xml.Note.toString()
note2 in_xml.Note2.toString()
}
println "-------- prettyPrint_JsonOutput.toJson:"
println JsonOutput.prettyPrint(JsonOutput.toJson(jsonBuilder));
def json = JsonOutput.toJson([note: 'test note....ÄäÜü ß / $ % § "'])
println "-------- json:"
println JsonOutput.prettyPrint(json)
}
JsonOutput.toJson:
-------- prettyPrint_JsonOutput.toJson:
{
"content": {
"note": "test note....\u00c4\u00e4\u00dc\u00fc \u00df / $ % \u00a7 \"",
"note2": "This is another note. here comes the Zeilenumbruch...bruch\n...hier geh's weiter\n"
}
}
-------- json:
{
"note": "John Doe",
"age": "test note....\u00c4\u00e4\u00dc\u00fc \u00df / $ % \u00a7 \""
}
您是否知道在JsonBuilder中使用JsonOutput并获取所需的输出以消除“content”元素?我需要转义特殊字符因此我不能使用toString
谢谢&amp;问候 马可
答案 0 :(得分:1)
设法通过以下方式解决问题:
JsonOutput.toJson(jsonSlurper.parseText(jsonBuilder.toString()))
答案 1 :(得分:0)
使用JsonOutput.toJson()
时,您不必使用JsonBuilder
- 它有一个方法JsonBuilder.toPrettyString()
,可以创建JSON对象的String
表示。< / p>
import groovy.json.JsonBuilder
def builder = new JsonBuilder()
builder {
name 'John Doe'
age 99
}
println builder.toPrettyString()
{
"name": "John Doe",
"age": 99
}