gpt4 book ai didi

arrays - Groovy 简单 JSON 数组生成器

转载 作者:行者123 更新时间:2023-12-01 16:02:49 25 4
gpt4 key购买 nike

我需要在 JSON 中构建一个简单的 JSON 数组,但在循环中它会在每次迭代期间覆盖第一个值。

def jsonBuilder = new groovy.json.JsonBuilder()
contact.each {
jsonBuilder.contact(
FirstName: it.getFirstName(),
LastName: it.getLastName(),
Title: it.getTitle(),
)
}

它仅返回简单的 JSON 并覆盖每次迭代的值并仅保留最后一次迭代的值。在 groovy 中构造 JSON 数组的语法是什么?

最佳答案

技巧是从联系人列表中收集。假设contract列表的结构如下,请按照下面jsonBuilder的使用方式进行操作。

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"
}
]
}

如果您正在寻找 JSONArray 而不是 JSONObject 作为最终结构,请使用:

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"
}
]

这没有意义,但如果需要如下所示的结构

[
{
"contact": {
"FirstName": "A",
"LastName": "B",
"Title": "C"
}
},
{
"contact": {
"FirstName": "D",
"LastName": "E",
"Title": "F"
}
},
{
"contact": {
"FirstName": "G",
"LastName": "H",
"Title": "I"
}
}
]

然后使用

jsonBuilder(
contact.collect {
[
contact : [
FirstName: it.getFirstName(),
LastName: it.getLastName(),
Title: it.getTitle()
]
]
}
)

关于arrays - Groovy 简单 JSON 数组生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28206255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com