Groovy JsonBuilder не включая коллекцию

У меня есть следующий код:

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

Я ожидаю, что результатом будет массив клиентов json, но вместо этого он содержит только одного клиента. Обратите внимание, что список клиентов содержит 2 элемента.

Я видел другой пост, в котором упоминается что-то вроде:

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

Но этот стиль не очень подходит для строителя. Например, я должен использовать двоеточия : назначать значения.

Есть ли другой подход без создания заводных объектов?

2 ответа

Нет, json - это карта, и вам нужен список карт. То, что вы делаете с каждым, это переназначение полей id, name и address, так что вы просто получаете последнее значение.

Так что вам нужно collect список карт вместе, как у вас есть в вопросе.

Вам нужно только это.

def json = new JsonBuilder( customers )

если в customer это не требуется в JSON.

Другие вопросы по тегам