如何在Groovy中通过JsonBuilder的闭包方式生成含数组的指定JSON结构
如何用Groovy JsonBuilder生成包含数组的目标JSON结构?
嘿,我懂你现在的困扰——你想要root对应一个包含单个对象的数组,但当前的闭包写法让它变成了单个对象。其实只要给JsonBuilder明确的数组标识就行,有两种简单的修改方式:
方式一:直接传入数组字面量
这种写法更直观,直接把要放在数组里的对象用[]包裹:
def testKey = "testkey" def testValue = "testvalue" def json = new JsonBuilder().root([ [key: testKey, value: testValue] ]).toPrettyString() println json
方式二:在闭包里用数组语法
如果你更习惯闭包的写法,只需要把原来的键值对用[]包裹起来,告诉JsonBuilder这是一个数组元素:
def testKey = "testkey" def testValue = "testvalue" def json = new JsonBuilder().root { [ key(testKey), value(testValue) ] }.toPrettyString() println json
两种方式都会生成你想要的目标JSON:
{ "root": [ { "key": "testkey", "value": "testvalue" } ] }
原理其实很简单:原来的闭包写法里,key(testKey)这种语法会被JsonBuilder解析为对象的键值对;而当你用[]把这些内容包裹起来时,JsonBuilder就会识别出这是一个数组结构,从而把root的值处理成数组类型。
内容的提问来源于stack exchange,提问作者pixel
相关产品推荐
相关产品推荐

