2016-06-21 18 views
1

Мой back-end - Spring (Boot), и я довольно далеко продвигаюсь вместе с ним и EmberJS. Удары небольшого препятствия теперь, потому что, когда я создаю новые записи из Ember-данных, он отправляет объект с единицей:Данные Ember с атрибутами @RequestBody и объектами Spring

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

отображения по умолчанию, что Джексон обеспечивает не предполагает идентичность, поэтому он не может отображать JSON для сущности. У меня есть в основном 3 варианта, и мне интересно, если кто-то еще по этому пути и как они решили проблему.

Вариант 1 - Создание DTO о том, что обернуть свои объекты с идентичностью

public class Thing { 
    private String name; 
} 

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

Вариант 2 - Настройка Джексоном с помощью пользовательского картографа десериализации JSON в мои стандартные объекты.

Вариант 3 - Настроить адаптер/сериализатор для Ember-Data, чтобы он не включал идентификатор объекта.

ответ

1

Я понял это с помощью @JsonRootName и настроил mapper, чтобы развернуть значение root.

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

} 

А потом в Application.java:

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