1

我有以下代码:

    def customers = Customer.findAll()
    def json = new JsonBuilder()
    json {
        customers.each { customer ->
            id customer.id
            name customer.name
            address customer.address
        }
    }

我期望结果是一个 json 客户数组,但它只包含 1 个客户。请注意,客户列表包含 2 个元素。

我看到其他一些帖子提到使用类似的东西:

customers.collect { 
    Customer c -> [id: c.id, name: c.name, address: c.address]
}   

但是这种风格并不适合建造者。例如,我必须使用冒号:来分配值。

是否有另一种不创建 groovy 对象的方法?

4

2 回答 2

0

不,json 是一个地图,你需要一个地图列表。您对每个字段所做的是重新分配 id、name 和 address 字段,因此您只需获得最后一个值。

所以你需要collect一个地图列表,就像你在问题中一样。

于 2014-07-15T22:16:30.957 回答
0

你需要的只是这个。

def json = new JsonBuilder( customers )

如果customerjson 中不需要额外的项目。

于 2014-07-15T23:54:48.170 回答