我一直在尝试使用groovy Jsonbuilder,你可以在下面看到尝试查看构建JSON对象和数组的不同方法.在事情开始变得有意义之后,我尝试扩展到下面显示的内容.我的问题是,为什么"内容"出现在json漂亮的字符串输出中?我实际上有另一个json对象在json字符串输出中显示this.class信息.
有任何想法吗?我是新手,所以它肯定是一个明显的.
def tt = ["test", "test1"]
def jjj = "jason"
def js3 = new groovy.json.JsonBuilder()
def js2 = new groovy.json.JsonBuilder(tt);
js3 hello: "$jjj", "$jjj": tt
def js4 = new groovy.json.JsonBuilder()
def result = js4([sdn: js3, openflow: js2, type: 3])
println js4.toPrettyString();
Run Code Online (Sandbox Code Playgroud)
输出:
{
"sdn": {
"content": {
"hello": "jason",
"jason": [
"test",
"test1"
]
}
},
"openflow": {
"content": [
"test",
"test1"
]
},
"type": 3
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*ter 13
这个问题可以重述为......
为什么这样:
import groovy.json.*
def js3 = new JsonBuilder(["test", "test1"])
def js4 = new JsonBuilder(js3)
println js4.toString()
Run Code Online (Sandbox Code Playgroud)
打印:
{"content":["test","test1"]}
Run Code Online (Sandbox Code Playgroud)
还有这个:
import groovy.json.*
def js3 = new JsonBuilder(["test", "test1"])
def js4 = new JsonBuilder(js3.content)
println js4.toString()
Run Code Online (Sandbox Code Playgroud)
打印这个(?):
["test","test1"]
Run Code Online (Sandbox Code Playgroud)
简短的回答是JsonBuilder有一个名为的成员content,它代表了有效负载.当一个JsonBuilder吸收另一个时,我们想要替换有效负载,而不是嵌套它.这行是替换有效载荷的方法:
def js4 = new JsonBuilder(js3.content)
最终,这源于JsonBuilder.toString()(代码在这里)调用JsonOutput.toJson(object)(代码在这里)的事实.
读者的练习是试验:
class MyBuilder {
def content
}
def myB = new MyBuilder(content: ["test", "test1"])
println JsonOutput.toJson(myB)
println JsonOutput.toJson(myB.content)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17149 次 |
| 最近记录: |