2013-03-07 8 views
5

js MVCフレームワークで消費されるジャージRESTサービスのPOCに取り組んでいます。フォームの1つでは、HTMLフォームをあらかじめ入力するために使用されるUserProfileオブジェクト(JSON by JSONにシリアル化されています)を返す必要があります。フォームのサブミット時には、フィールドのサブセットのみをサーバーに送信する必要があります(「ロール」などの一部のフィールドは読み取り専用であり、変更しないでください)、入力JSONはUserProfileUpdateRequestオブジェクトにマップされます。 UserProfileUpdateRequestはUserProfileのサブセットになるので、私の最初の選択は構成を使用するためです:UserProfile UserProfileUpdateRequestが含まれているので、サーバーコードの保守の観点から、私はこれら2つのオブジェクトの間に関係がありたいと思います。 問題は、UserProfileがjacksonによってJSONにシリアル化されるとき、参照されるUserProfileRequestインスタンスのすべてのプロパティがuserProfileRequestフィールドにラップされることです.JSの人にとっては当然ですが(少なくとも私はそれは容認できる)。 jacksonに「フラットな」ルートオブジェクトと参照オブジェクトがルートの下でシリアル化されなければならないポイントを強制することはできますか?jacksonは参照されたオブジェクトフィールドをルートにシリアライズ

{"role":"admin",...,"userProfileRequest":{"a":"...","b":"...",...}} 

を私はジャクソン1.9.7を使用しています

{"role":"admin",...,"a":"...","b":"...",...} 

を取得したいと思います:のUserProfileがシリアライズされたときに少し例

class UserProfileRequest{ 
private String a; 
private String b; 
... 
} 

class UserProfile{ 
private String role; 
... 
private UserProfileRequest userProfileRequest; 
} 

は、だから私は得ました。

答えて

14

あなたは@JsonUnwrapped注釈を探していると思います。

class UserProfile{ 
    private String role; 
    ... 
    @JsonUnwrapped 
    private UserProfileRequest userProfileRequest; 
} 

編集:ここでは@JsonUnwrapped in Jackson 1.9.9へのリンクがあるので、それはあまりにも、1.9.7で利用可能であるべきです。

+0

THxナツメックス。うまく動作します。 – user62058

関連する問題