2016-06-21 6 views
1

私のバックエンドはSpring(Boot)で、EmberJSとかなり近づいています。私はエンバー・データからの新しいレコードを作成するとき、それはアイデンティティを持つオブジェクトをポストので、今わずかな暗礁を打つ:それはマップすることはできませんので、ジャクソンが提供Springの@RequestBodyとObject Identitiesを持つEmberデータ

{ "thing": {"name": "The Thing"} } 

デフォルトのマッピングは、アイデンティティを負いません。エンティティへのJSON私は基本的に3つの選択肢があり、他の誰かがこの道を歩いていて、どのように問題を解決しているのか疑問に思っています。

オプション1 - 私の標準オブジェクトにJSONをデシリアライズするためのカスタムマッパーを経由して設定ジャクソン - DTOのは、そのID

public class Thing { 
    private String name; 
} 

// use this for the @RequestBody 
public class ThingDTO { 
    private Thing thing; 
} 

オプション2と私のエンティティを包む作成します。

オプション3 - オブジェクトIDを含まないようにEmber-Data用のアダプタ/シリアライザを構成します。

答えて

1

@JsonRootNameを使って計算し、ルート値をアンラップするようにマッパーを設定しました。 Application.javaで

@JsonRootName(value = "thing") 
public class Thing { 

} 

そして:

@Bean 
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { 
    ObjectMapper mapper = new ObjectMapper(); 
    mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); 
    MappingJackson2HttpMessageConverter converter = 
      new MappingJackson2HttpMessageConverter(mapper); 
    return converter; 
} 
関連する問題