Grails 域对象包含 Class 属性

Grails Domain Object Includes Class Attribute

我正在使用域对象与 Grails 中的数据库进行交互。

当我在域对象上使用 list() 方法从数据库中获取所有行时,除了一件事外,它工作得很好。为每一行返回的对象还包括一个名为 "class" 的属性。我已经阅读了一些关于创建自定义编组器的内容,这些编组器允许我从对象中删除该属性。这真的是不必 return class 属性的最佳方法吗?

谢谢!

您也可以使用 JSON.registerObjectMarshaller 如下:

// BootStrap.groovy
JSON.registerObjectMarshaller( YourDomain ) {
    it.properties.findAll { it.name != 'class' }
}

参考 here 类似的例子。

这里有一个 link 来更改 Grails 默认呈现 JSON 的方式: http://grails.org/doc/2.4.4/guide/single.html#defaultRenderers

只需将 "NameOfDomainClass" 更改为您想要以不同方式呈现的 class。在这种情况下,域 Class。

import grails.rest.render.json.*
beans = {
    bookRenderer(JsonRenderer, NameOfClass) {
        excludes = ['class']
    }
}