我需要创建一个这样的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()