JsonOutput.toJson 使用 JsonBuilder 对象添加额外的 "content" 元素
JsonOutput.toJson using a JsonBuilder object adds additional "content" element
我正在使用 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 \""
}
您是否知道将 JsonOutput 与 JsonBuilder 一起使用并获得所需输出的选项,从而消除了 "content" 元素?我需要转义特殊字符,因此我不能使用 toString
感谢和问候
马可
您在使用 JsonBuilder
时不必使用 JsonOutput.toJson()
- 它有一个方法 JsonBuilder.toPrettyString()
可以创建 String
表示您的 JSON 对象。
import groovy.json.JsonBuilder
def builder = new JsonBuilder()
builder {
name 'John Doe'
age 99
}
println builder.toPrettyString()
输出
{
"name": "John Doe",
"age": 99
}
设法通过以下方式解决了问题:
JsonOutput.toJson(jsonSlurper.parseText(jsonBuilder.toString()))
我正在使用 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 \""
}
您是否知道将 JsonOutput 与 JsonBuilder 一起使用并获得所需输出的选项,从而消除了 "content" 元素?我需要转义特殊字符,因此我不能使用 toString
感谢和问候 马可
您在使用 JsonBuilder
时不必使用 JsonOutput.toJson()
- 它有一个方法 JsonBuilder.toPrettyString()
可以创建 String
表示您的 JSON 对象。
import groovy.json.JsonBuilder
def builder = new JsonBuilder()
builder {
name 'John Doe'
age 99
}
println builder.toPrettyString()
输出
{
"name": "John Doe",
"age": 99
}
设法通过以下方式解决了问题:
JsonOutput.toJson(jsonSlurper.parseText(jsonBuilder.toString()))