从 gorm 查询创建 json 字符串列表

create json string list from gorm query

我有以下域对象

class ProductQuantity implements Comparable {

    static constraints = {
    }

    Integer quantity

    static mapping = {
        version false
    }

    static belongsTo = Product
    static hasMany = [products:Product]

    int compareTo(obj) {
        quantity.compareTo(obj.quantity)
    }

}

我想要 return 一个 JSON 字符串,看起来像这样 [50,100,200]

有了 gorm,是否可以轻松地做到这一点而不必循环对象并创建一个集合?

我从这里开始

def availableQuantities = ProductQuantity.findAll()

有什么建议吗?

假设您是通过控制器执行此操作的:

ProductQuantity.list() as JSON

您可以通过多种方式控制 json :

1/ 在Bootstrap.groovy中注册一个JSON编组器:

class Bootstrap {
    def init = { servletContext ->
        JSON.registerObjectMarshaller(ProductQuantity) {
            return it.quantity
        }
    }
}

2/ 对于您的简单情况,您还可以向 ProductQuantity class 添加一个 toString 方法,returns 数量 属性

3/ 对于更复杂的用例,您可以创建自定义命名配置(如果您想从同一域 class 生成不同类型的 JSON)。 See this post.