Json Grails-如何注销已注册的对象封送器
我的grails应用程序中有一个域类Json Grails-如何注销已注册的对象封送器,json,grails,groovy,marshalling,unmarshalling,Json,Grails,Groovy,Marshalling,Unmarshalling,我的grails应用程序中有一个域类Person,我需要根据上下文以不同形式(JSON)输出它 在一个上下文中,我只需要呈现几个字段(比如id和name)。在另一个上下文中,我想呈现更多内容(id、名称、凭据、年龄等)。我想知道是否有可能在使用后立即注销特定的封送员 基本上,我要寻找的是: ------------------------------------------------------------- // context #1 JSON.registerObjectMarshall
Person
,我需要根据上下文以不同形式(JSON)输出它
在一个上下文中,我只需要呈现几个字段(比如id和name)。在另一个上下文中,我想呈现更多内容(id、名称、凭据、年龄等)。我想知道是否有可能在使用后立即注销特定的封送员
基本上,我要寻找的是:
-------------------------------------------------------------
// context #1
JSON.registerObjectMarshaller(Person) {
... output just id and name
}
render myPerson as JSON
JSON.unregisterObjectMarshaller(Person) // how do i do this?
-------------------------------------------------------------
// context #2
JSON.registerObjectMarshaller(Person) {
... output all fields
}
render myPerson as JSON
JSON.unregisterObjectMarshaller(Person) // how do i do this?
-------------------------------------------------------------
注意:我可以为Person创建两个空子类,然后为每个子类注册单独的封送员。随着上下文数量的增加,虚拟子类的数量也会增加。这在我看来是非常不干净的。您可能希望使用所谓的命名配置,而不是“交换”封送拆收器。您可以将其封装到一个更简洁的类/实用程序中,但在某些地方(如Bootstrap.groovy),您可以: 然后,在控制器中,您可以选择要显示的编组人员样式:
// Show lots of stuff
JSON.use('full') {
render people as JSON
}
或
+这真漂亮。而且非常干净。非常感谢。我会把它放进去,让你知道它是怎么回事。效果很好。谢谢。:)这是一个很好的解决方案。有没有一种方法可以将其与Grails的“响应”功能结合使用,从而使用XML和JSON的命名封送器?说到将其很好地捆绑起来,这里有一种方法可以做到这一点:
// Show lots of stuff
JSON.use('full') {
render people as JSON
}
// Show less stuff
JSON.use('thin') {
render people as JSON
}