2017-10-26 25 views
1

次の効果を得ようとしています。Jacksonは親クラスのフィールドとして子クラスをシリアル化します

class Foo{ 
    public Bar bar; 
    public int f1 = 1; 
} 

public class Bar{ 
    public int b1; 
    public int b2; 
} 

あなたはJSONにこれをシリアル化した場合、あなたが

{ "bar" : { 
       "b1" : 1, 
       "b2" : 2, 
      }, 
    "f1" : 0 
} 

を取得しますしかし、私は、それは基本的にあなたがフィールドをシリアル化していない

{ 
    "b1" : 1, 
    "b2" : 2,   
    "f1" : 0 
} 

として書かれているためにジャクソンの注釈にlokingていますむしろ、フィールドをツリーの親オブジェクトにプルします。

これはカスタムシリアライザで行うことができますが、このための簡単なアノテーションスタイルがあれば私は悩みます。あなたがMixinまたはカスタム・シリアライザを使用し、その後、あなたのクラスを編集することができない場合は

+0

が必要な場合は? –

+0

jsonは別のサービスでこのように読み込まれていますが、クラス階層はライター側のこのようなものです –

答えて

0

(私は@JsonValueで注釈されている可能性があり、単一のフィールドのために)あなたが@JsonUnwrapped

class Foo{ 
    @JsonUnwrapped 
    public Bar bar; 
    public int f1 = 1; 
} 

を使用することができます。

使用@JsonCreatorあなたはこれをしたいの代わりに、デフォルトは、ネストされた直列化を使用して、なぜ私は好奇心が強いdeserialization

+0

ありがとう!これが私が探していたものです –

関連する問題