0

我想知道在向 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 字符串中。

任何建议我缺少什么。

4

2 回答 2

3

我认为 grails 中的 JSON 转换不会获取动态添加的属性。

也许您应该为相关类注册自己的对象编组器?

在引导程序中:

    def init = {servletContext ->
        JSON.registerObjectMarshaller(ResetRequest) {req->
            [
                targetIp:req.targetIp
                //etc 
            ]
    }

更新 此链接显示如何从默认 Marshaller 继承并将您自己的逻辑添加到编组特定字段:

http://grails4you.com/2012/04/restful-api-for-grails-domains/

于 2012-05-08T13:41:34.730 回答
1

您应该在 Bootstrap 中注册自定义属性,例如

def init = { servletContext ->
  ResetRequest.metaClass.targetIp = {req ->
    return "192.168.0.1";   
  } 
}
于 2012-05-15T10:33:11.070 回答