2016-06-21 6 views
1

Mein Back-End ist Spring (Boot) und ich bin ziemlich weit damit und EmberJS. Schlagen jetzt einen leichten Haken, denn wenn ich neue Datensätze von Ember-Daten zu erstellen, wird das Objekt mit einer Identitäts Beiträge:Ember Daten mit Spring @RequestBody und Objekt Identitäten

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

Die Standardzuordnung, die Jackson bietet eine Identität nicht annehmen, so dass es die nicht abbilden JSON an die Entität. Ich habe im Grunde 3 Optionen und ich frage mich, ob jemand anderer diesen Weg gegangen ist und wie er das Problem gelöst hat.

Option 1 - Erstellen DTO, dass meine Einheiten wickeln mit einer Identität

public class Thing { 
    private String name; 
} 

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

Option 2 - Konfigurieren von Jackson über eine benutzerdefinierte Mapper die JSON in meine Standard-Objekte deserialisieren.

Option 3 - Konfigurieren Sie einen Adapter/Serializer für Ember-Data so, dass er die Objektidentität nicht enthält.

Antwort

1

Ich fand es heraus mit @JsonRootName und konfigurieren Sie den Mapper, um den Root-Wert auszupacken.

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

} 

Und dann in Application.java:

@Bean 
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { 
    ObjectMapper mapper = new ObjectMapper(); 
    mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); 
    MappingJackson2HttpMessageConverter converter = 
      new MappingJackson2HttpMessageConverter(mapper); 
    return converter; 
}