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

时间:2015-06-19 17:44:32

标签: grails gorm

我有以下域对象

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)
    }

}

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

使用gorm,是否可以轻松地完成此操作而无需循环对象并创建一个集合?

我从这里开始

def availableQuantities = ProductQuantity.findAll()

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

假设您是从控制器执行此操作:

ProductQuantity.list() as JSON

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

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

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

2 /对于您的简单情况,您还可以向ProductQuantity类添加一个toString方法,该类返回quantity属性

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