从 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.
我有以下域对象
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.