我想知道我在向中添加动态属性时缺少什么
java类,并尝试使用JSON转换器呈现该类。
我有一个纯净的Java pojo,并使用以下方法为其添加了动态属性:
// adding property
ResetRequest.metaClass.targetIp = "192.168.0.1"
// creating object
ResetRequest obj = new ResetRequest()
// printing the properties
println obj.properties
打印属性时,对象具有附加属性
叫做“targetIp”,所以看起来一切正常,但是当我尝试渲染对象时
作为JSON,添加的属性不在JSON字符串中。
任何建议我所缺少的。
最佳答案
我认为grails中的JSON转换不会获取动态添加的属性。
也许您应该为该类(class)注册自己的对象编码?
在 bootstrap 中:
def init = {servletContext ->
JSON.registerObjectMarshaller(ResetRequest) {req->
[
targetIp:req.targetIp
//etc
]
}
更新
此链接显示了如何继承默认的Marshaller并添加自己的逻辑以编码特定字段:
http://grails4you.com/2012/04/restful-api-for-grails-domains/
关于grails - Grails/Groovy向现有Java类添加属性,而在尝试使用JSON转换器进行序列化时丢失它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10497646/