【发布时间】:2015-01-19 14:30:17
【问题描述】:
我有以下域类:
class Domain1{
String prop1
Domain2 prop2
}
class Domain2{
String prop3
}
每个都有 2 个命名的 Marshaller 配置
JSON.createNamedConfig('PUBLIC_API'){
it.registerObjectMarshaller(Domain1){Domain1 domain1->
return ['key1': domain1.prop1, 'key2': domain1.prop2]
}
}
JSON.createNamedConfig('PUBLIC_API'){
it.registerObjectMarshaller(Domain2){Domain2 domain2->
return ['key1': domain2.prop3]
}
}
当我尝试使用这个命名配置时,编组只在父域的对象上完成,嵌套/子类的编组器甚至不会被调用。
所以,使用这个配置
JSON.use('PUBLIC_API'){
render domain1 as JSON
}
结果
{
"key1": "value1",
"key2": {
"id": 1,
"class" : "Domain2",
"prop3" : "value2"
}
}
我在grails documentation 中找不到关于命名编组器配置的这种用法的任何信息
有人用过这样的用例吗?或者如果这甚至被支持?
【问题讨论】:
-
嵌套编组器在没有命名配置的情况下工作正常,但这不是我的用例。我必须为每个域注册至少 2 种不同的格式,我认为命名配置应该是一种解脱。
-
我最终添加了 3 个不同的配置......一个未命名的配置和 2 个命名的配置到子域。这并不能解决问题,而只是一种解决方法
标签: json grails domain-driven-design marshalling grails-2.0