groovy – 如何使用jsonbuilder与集合?

我需要创建一个这样的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,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,3]

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

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

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...