在我的代码中,我有一个带有枚举类型的域对象。该枚举类型保存并从数据库中检索出精细值。我将域对象列表转换为json单元格。除枚举外的所有字段都是字符串或长整数。当JSON在“另一侧”被拾取时,它将为列显示[Object object],而不是枚举名称或枚举值。在域或json方面是否有任何有助于解决此问题的方法?下面的代码/示例
域类
class MyDomain {
long id
long otherValue
MyEnum enu //Nullable per constraints
//Mapping and constraints are not special.
}
enum MyEnum {
ENUM1("Value1"),ENUM2("Value2")
//constructor ommitted
String myValue
String toString() { myValue }
def jsonCells = domainList.collect
{
[cell: [
it.id,
it.otherValue,
it.enu?.value
],
id: it.id]
}
最佳答案
由于在构建对象时只是将其放入列表中,因此除非您专门对其进行其他操作(例如您当前正在执行),否则它将被视为对象。
一种替代方法是使用it.enu as String
或类似的方法,但是仍然可能无法实现您要实现的目标。
另一种(也许是工程过度的方法?)方法是在域本身上创建一个返回值的方法,然后在构建JSON时使用该方法:
class MyDomain {
MyEnum enu
def enuVal() {
enu?.value
}
}
def jsonCells = domainList.collect {
[cell: [
it.enuVal()
],
...]
it.enu?.val
。为您的JSON呈现方法编写一个测试,并确保该值是您期望的值,以便您不会忘记。
https://stackoverflow.com/questions/6878481/