Groovy 简单的 JSON 数组构建器 [英] Groovy Simple JSON array builder
问题描述
我需要在 JSON 中构建一个简单的 JSON 数组,但在循环中它会在每次迭代期间覆盖第一个值.
def jsonBuilder = new groovy.json.JsonBuilder()联系.每个{jsonBuilder.contact(名字:it.getFirstName(),姓氏:it.getLastName(),标题:it.getTitle(),)}
它只返回简单的 JSON 并覆盖每次迭代的值并只保留最后一个.在groovy中构造JSON数组的语法是什么?
技巧是从联系人列表中收集
.假设contract
列表的结构如下,按照下面jsonBuilder
的使用方式
def 联系 = [[ getFirstName : { 'A' }, getLastName : { 'B' }, getTitle : { 'C' } ],[ getFirstName : { 'D' }, getLastName : { 'E' }, getTitle : { 'F' } ],[ getFirstName : { 'G' }, getLastName : { 'H' }, getTitle : { 'I' } ]]def jsonBuilder = new groovy.json.JsonBuilder()jsonBuilder {联系人 contact.collect {[名字:it.getFirstName(),姓氏:it.getLastName(),标题:it.getTitle()]}}println jsonBuilder.toPrettyString()//印刷{联系人":[{"名字": "A","姓氏": "B",标题":C"},{"名字": "D","LastName": "E",标题":F"},{"名字": "G","LastName": "H",标题":我"}]}
如果您正在寻找 JSONArray 而不是 JSONObject 作为最终结构,请使用:
jsonBuilder(联系.收集{[名字:it.getFirstName(),姓氏:it.getLastName(),标题:it.getTitle()]})//操作[{"名字": "A","姓氏": "B",标题":C"},{"名字": "D","LastName": "E",标题":F"},{"名字": "G","LastName": "H",标题":我"}]
没有意义,但如果需要如下结构
<预><代码>[{接触": {"名字": "A","姓氏": "B",标题":C"}},{接触": {"名字": "D","LastName": "E",标题":F"}},{接触": {"名字": "G","LastName": "H",标题":我"}}]然后使用
jsonBuilder(联系.收集{[接触 : [名字:it.getFirstName(),姓氏:it.getLastName(),标题:it.getTitle()]]})
I need to build a simple JSON array in JSON but in the loop it overwrites the first value during every iteration.
def jsonBuilder = new groovy.json.JsonBuilder()
contact.each {
jsonBuilder.contact(
FirstName: it.getFirstName(),
LastName: it.getLastName(),
Title: it.getTitle(),
)
}
It returns just the simple JSON and overwrites the value of every iteration and retains just the last one. What is the syntax for constructing a JSON Array in groovy?
Trick is to collect
from the list of contacts. Assuming structure of contract
list is as below, follow the way jsonBuilder
is used below.
def contact = [
[ getFirstName : { 'A' }, getLastName : { 'B' }, getTitle : { 'C' } ],
[ getFirstName : { 'D' }, getLastName : { 'E' }, getTitle : { 'F' } ],
[ getFirstName : { 'G' }, getLastName : { 'H' }, getTitle : { 'I' } ]
]
def jsonBuilder = new groovy.json.JsonBuilder()
jsonBuilder {
contacts contact.collect {
[
FirstName: it.getFirstName(),
LastName: it.getLastName(),
Title: it.getTitle()
]
}
}
println jsonBuilder.toPrettyString()
// Prints
{
"contacts": [
{
"FirstName": "A",
"LastName": "B",
"Title": "C"
},
{
"FirstName": "D",
"LastName": "E",
"Title": "F"
},
{
"FirstName": "G",
"LastName": "H",
"Title": "I"
}
]
}
If you are looking for a JSONArray instead of a JSONObject as a final stucture, then use:
jsonBuilder(
contact.collect {
[
FirstName: it.getFirstName(),
LastName: it.getLastName(),
Title: it.getTitle()
]
}
)
// OP
[
{
"FirstName": "A",
"LastName": "B",
"Title": "C"
},
{
"FirstName": "D",
"LastName": "E",
"Title": "F"
},
{
"FirstName": "G",
"LastName": "H",
"Title": "I"
}
]
It does not make sense but if structure needed like below
[
{
"contact": {
"FirstName": "A",
"LastName": "B",
"Title": "C"
}
},
{
"contact": {
"FirstName": "D",
"LastName": "E",
"Title": "F"
}
},
{
"contact": {
"FirstName": "G",
"LastName": "H",
"Title": "I"
}
}
]
then use
jsonBuilder(
contact.collect {
[
contact : [
FirstName: it.getFirstName(),
LastName: it.getLastName(),
Title: it.getTitle()
]
]
}
)
这篇关于Groovy 简单的 JSON 数组构建器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!