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.