groovy - 如何将 jsonbuilder 与集合一起使用?

标签 groovy

我需要创建一个像这样的 json 消息:

{
  success:true,
  count:3,
  data: [
    {id:1},
    {id:2},
    {id:3}
  ]
}

我已经尝试过了

import groovy.json.*

def tasks = [1, 2,3]
def json = new JsonBuilder()

json{
  success(true)
  count(tasks.size())
  data {
    tasks.each {
      data(
        id: it        
      )
    }
  }
}

JsonOutput.prettyPrint(json.toString())

但它不起作用。有人可以告诉我如何让它发挥作用吗?

最佳答案

我建议将任务列表转换为 [[id: 1], [id: 2], [id: 3]] 形式的列表,然后对其进行“jsonizing”:

import groovy.json.JsonBuilder

def tasks = [1, 2, 3]
def json = new JsonBuilder()

json{
  success(true)
  count(tasks.size())
  data(tasks.collect {[id: it]})
}

println json.toPrettyString()

我通常更喜欢首先在 Groovy 中生成数据结构(例如列表、映射),然后将它们转换为 JSON,这样我通常可以更好地控制将要序列化的数据,并且不需要包含序列化代码的逻辑。

import groovy.json.JsonBuilder

def tasks = [1, 2, 3]

def data = [
  success: true,
  count: tasks.size(),
  data: tasks.collect {[id: it]}
]

def json = new JsonBuilder(data)
println json.toPrettyString()

关于groovy - 如何将 jsonbuilder 与集合一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9929780/

相关文章:

Groovy 闭包 DELEGATE_ONLY 和 DELEGATE_FIRST 策略不起作用

string - Groovy - 两个闭包调用的故事

groovy - 如何在 SoapUi 中使用 Groovy 重命名测试用例或测试步骤

java - 加载和分析海量数据

Groovy 的 @CompileStatic 和映射构造函数

groovy - 如何在Jenkins Workflow中重复一个阶段

android - 如何使用Gradle任务从命令行获取参数?

java - 你如何设置一个也可以使用 groovy 的 maven java 项目?

xml - 节点名称中包含特殊字符的 Groovy XmlSlurper

grails - Grails:如何检查是否已将经过字段验证的字段添加到其他Domain类?