在泽西岛,我如何自动在JAXB pojo中添加root?
我有我的JAXB pojo
class Product {
private String name;
....
}
默认情况下,生成的json是
{
"name": "Burton Custom Freestlye 151",
}
我希望它是
{
"product": {
"name": "Burton Custom Freestlye 151",
}
}
注意:我的意思是自动不会创建单独的类只是为了包含另一个pojo。
这应该是序列化/反序列化为JSON。
另外我还有其他JSON不使用root元素。
答案 0 :(得分:1)
使用Spring Boot,您可以将ObjectMapper
配置为Spring bean,并设置Spring Boot以使用映射器。 ObjectMapper
自动添加根元素的配置属性是
默认行为是取类名和小写。如果您想要不同的内容,可以使用@XmlRootElement("newName")
或@JsonRootName("newName")
为课程注释。要创建Spring bean,只需在配置类中添加以下内容
@Bean
public ObjectMapper mapper() {
final ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_NAME, true);
return mapper;
}
注意我认为这(为ObjectMapper创建一个Spring bean)只能从1.4.0开始提供。如果您使用的是早期版本的Boot,则只需do this。
此外,如果您期望带有包装值的传入JSON,您还需要解包它。你可以用
做到这一点以与上面相同的方式配置它(传递true
)。
(此时不太有用,但可能在将来)
看看source for @JsonRootName
,杰克逊似乎一直计划在2.4之后的注释中添加alwaysWrap
属性。但我猜他们一直拖延这个。不知道为什么。也许将来它会出现。