如何使用jsonbuilder与集合?

Sea*_*yen 16 groovy

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

{
  success:true,
  count:3,
  data: [
    {id:1},
    {id:2},
    {id:3}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我试过这个

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())
Run Code Online (Sandbox Code Playgroud)

但它不起作用.有人可以告诉我如何使它工作?

epi*_*ian 35

我建议将任务列表转换为表单列表,[[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()
Run Code Online (Sandbox Code Playgroud)

我通常更喜欢首先在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()
Run Code Online (Sandbox Code Playgroud)