使用Groovy输出JSON

我一直在尝试使用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();


{
"sdn": {
    "content": {
        "hello": "jason","jason": [
            "test","test1"
        ]
    }
},"openflow": {
    "content": [
        "test","test1"
    ]
},"type": 3

}

解决方法

这个问题可以重述为……

为什么这样:

import groovy.json.*

def js3 = new JsonBuilder(["test","test1"])
def js4 = new JsonBuilder(js3)
println js4.toString()

打印:

{"content":["test","test1"]}

还有这个:

import groovy.json.*

def js3 = new JsonBuilder(["test","test1"])
def js4 = new JsonBuilder(js3.content)
println js4.toString()

打印这个(?):

["test","test1"]

简短的回答是JsonBuilder有一个名为content的成员,它代表了有效负载.当一个JsonBuilder吸收另一个时,我们想要替换有效负载,而不是嵌套它.这行是替换有效载荷的方法

def js4 = new JsonBuilder(js3.content)

最终,这源于JsonBuilder.toString()(code here)调用JsonOutput.toJson(object)(code here)的事实.

读者的练习是试验:

class MyBuilder {
    def content
}

def myB = new MyBuilder(content: ["test","test1"])
println JsonOutput.toJson(myB)
println JsonOutput.toJson(myB.content)

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...