我的后端是Spring(Boot),我和EmberJS一起走得很远。现在遇到轻微的障碍,因为当我从Ember-Data创建新记录时,它会使用标识发布对象:
{ "thing": {"name": "The Thing"} }
Jackson提供的默认映射不承担身份,因此无法将JSON映射到实体。我基本上有3个选项,我想知道是否有其他人已经走这条路,他们是如何解决这个问题的。
选项1 - 创建用身份
包装我的实体的DTOpublic class Thing {
private String name;
}
// use this for the @RequestBody
public class ThingDTO {
private Thing thing;
}
选项2 - 通过自定义映射器配置Jackson,将JSON反序列化为我的标准对象。
选项3 - 为Ember-Data配置适配器/序列化程序,使其不包含对象标识。
答案 0 :(得分:1)
我使用@JsonRootName并配置映射器以解包根值。
@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;
}