没有索引的 jsonBuilder
jsonBuilder without indexes
我尝试了此处描述的示例:http://docs.groovy-lang.org/2.4.7/html/gapi/groovy/json/JsonBuilder.html
这很好用,但是我如何生成 json 有效负载,其中某些项目没有索引,例如 "firstElt" 和 "secondElt" 在此 :
[["firstElt","secondElt",[{"thirdElt":{"id":"1","name":"laloune"},"def":"blabla"}]]]
我尝试了以下方法:
import groovy.json.JsonBuilder;
def builder = new groovy.json.JsonBuilder()
def root = builder {
'root' 'firstElt',
'secondElt',
thirdElt(
id: '1',
name: 'laloune'
)
'def' 'blabla' }
但它生成以下内容:
{
"thirdElt":{
"id":"1",
"name":"laloune"
},
"root":[
"firstElt",
"secondElt",
{
"id":"1",
"name":"laloune"
}
],
"def":"blabla"
}
我认为评论基本上已经回答了问题,但是
因为有时用一个例子会更清楚,我将在下面提供一个例子。
首先,您需要跟踪 javascript 数据类型。 Javascript 有,
除了单值事物、数组(事物列表)和对象
(本质上是键值对的映射)。
在你的例子中:
[["firstElt","secondElt",[{...
^
a javascript array
[["firstElt","secondElt",[{...
^
an array within the outer array, index 0
[["firstElt","secondElt",[{...
^
a second array at index 1
[["firstElt","secondElt",[{"thirdElt":{...
^
a javascript map/object
this is the first element of the second
array in the outermost array
如评论中所述,通常是最简单的处理方式
在 groovy 中用这个来生成一个 groovy 数据结构
相关数组(groovy 中的列表)和对象(groovy 中的地图)布局
然后将其转换为 json。这样你就可以使用所有 groovy
建立和改变(改变)列表和地图的能力,然后
最后只生成 json 。
在您的示例中生成结构的示例代码:
import groovy.json.*
def structure = [ // outermost list
["firstElt", "secondElt"], // a list, structure[0]
[ // a list, structure[1]
[thirdElt: [ // a map, structure[1][0]
id: "1", // map entry, structure[1][0]['thirdElt']['id']
name: "laloune"],
def: "blabla" // map entry, structure[1][0]['def']
]
]
]
def json = JsonOutput.toJson(structure)
def pretty = JsonOutput.prettyPrint(json)
println "json: \n$json"
println ""
println "pretty: \n$pretty"
执行此过程:
╭─ groovy-jsonbuilder-without-indexes
╰─➤ groovy solution.groovy
json:
[["firstElt","secondElt"],[{"thirdElt":{"id":"1","name":"laloune"},"def":"blabla"}]]
pretty:
[
[
"firstElt",
"secondElt"
],
[
{
"thirdElt": {
"id": "1",
"name": "laloune"
},
"def": "blabla"
}
]
]
╭─ groovy-jsonbuilder-without-indexes
╰─➤
我尝试了此处描述的示例:http://docs.groovy-lang.org/2.4.7/html/gapi/groovy/json/JsonBuilder.html
这很好用,但是我如何生成 json 有效负载,其中某些项目没有索引,例如 "firstElt" 和 "secondElt" 在此 :
[["firstElt","secondElt",[{"thirdElt":{"id":"1","name":"laloune"},"def":"blabla"}]]]
我尝试了以下方法:
import groovy.json.JsonBuilder;
def builder = new groovy.json.JsonBuilder()
def root = builder {
'root' 'firstElt',
'secondElt',
thirdElt(
id: '1',
name: 'laloune'
)
'def' 'blabla' }
但它生成以下内容:
{
"thirdElt":{
"id":"1",
"name":"laloune"
},
"root":[
"firstElt",
"secondElt",
{
"id":"1",
"name":"laloune"
}
],
"def":"blabla"
}
我认为评论基本上已经回答了问题,但是 因为有时用一个例子会更清楚,我将在下面提供一个例子。
首先,您需要跟踪 javascript 数据类型。 Javascript 有, 除了单值事物、数组(事物列表)和对象 (本质上是键值对的映射)。
在你的例子中:
[["firstElt","secondElt",[{...
^
a javascript array
[["firstElt","secondElt",[{...
^
an array within the outer array, index 0
[["firstElt","secondElt",[{...
^
a second array at index 1
[["firstElt","secondElt",[{"thirdElt":{...
^
a javascript map/object
this is the first element of the second
array in the outermost array
如评论中所述,通常是最简单的处理方式 在 groovy 中用这个来生成一个 groovy 数据结构 相关数组(groovy 中的列表)和对象(groovy 中的地图)布局 然后将其转换为 json。这样你就可以使用所有 groovy 建立和改变(改变)列表和地图的能力,然后 最后只生成 json 。
在您的示例中生成结构的示例代码:
import groovy.json.*
def structure = [ // outermost list
["firstElt", "secondElt"], // a list, structure[0]
[ // a list, structure[1]
[thirdElt: [ // a map, structure[1][0]
id: "1", // map entry, structure[1][0]['thirdElt']['id']
name: "laloune"],
def: "blabla" // map entry, structure[1][0]['def']
]
]
]
def json = JsonOutput.toJson(structure)
def pretty = JsonOutput.prettyPrint(json)
println "json: \n$json"
println ""
println "pretty: \n$pretty"
执行此过程:
╭─ groovy-jsonbuilder-without-indexes
╰─➤ groovy solution.groovy
json:
[["firstElt","secondElt"],[{"thirdElt":{"id":"1","name":"laloune"},"def":"blabla"}]]
pretty:
[
[
"firstElt",
"secondElt"
],
[
{
"thirdElt": {
"id": "1",
"name": "laloune"
},
"def": "blabla"
}
]
]
╭─ groovy-jsonbuilder-without-indexes
╰─➤