gpt4 book ai didi

json - 如何使用 groovy GStringTemplateEngine 在 json 文件中创建数组字段

转载 作者:行者123 更新时间:2023-12-02 08:15:12 27 4
gpt4 key购买 nike

我想创建以下 json:

{
"reviewers": [
{
"user": {
"name": "a"
}
},
{
"user": {
"name": "b"
}
},
{
"user": {
"name": "c"
}
}
]
}

使用:

users= ["a", "b", "c"]
def binding = [
arr : users
]

def f = new File(templateFileName)
def engine = new groovy.text.GStringTemplateEngine()
def template = engine.createTemplate(f).make(binding)
println template.toString()

我尝试了模板的几种变体并以:

{
"reviewers": [
<% arr.each { out <<
""" {
"user": {
"name": "${it}"
}
},"""
} %>
]
}

这导致:

    {
"reviewers": [
{
"user": {
"name": "a"
}
}, {
"user": {
"name": "b"
}
}, {
"user": {
"name": "c"
}
},// <-- illegal comma
]
}

问题是最后一个条目添加了一个多余的逗号(这导致 json 不合法)有没有一种方法可以更优雅地创建它,以便最后一个条目不包含非法逗号?

最佳答案

另一种方法是使用 collect 而不是 each 用子模板(您粘贴的第二个三引号文本)处理每个数组元素。接下来,使用 ,\n 连接所有元素,就像这样

tpl = '''{
"reviewers": [
<% out << arr.collect {
""" {
"user": {
"name": "${it}"
}
}"""
}.join(',\\n') %>
]
}
'''

users= ["a", "b", "c"]
def binding = [
arr : users
]

def engine = new groovy.text.GStringTemplateEngine()
def template = engine.createTemplate(tpl).make(binding)
println template.toString()

请注意,out 是整个计算的结果,而不是每次迭代期间的结果。

关于json - 如何使用 groovy GStringTemplateEngine 在 json 文件中创建数组字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42665755/

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