0

Javaクラスに動的プロパティを追加し、JSONコンバーターを使用してそのクラスをレンダリングしようとすると、何が欠けているのでしょうか。私は純粋なJavaPojoを持っており、以下を使用して動的プロパティを追加しています。

// 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 
            ]
    }

更新 このリンクは、デフォルトのマーシャラーから継承し、マーシャリング固有のフィールドに独自のロジックを追加する方法を示しています。

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 に答える