【发布时间】:2015-06-07 12:25:59
【问题描述】:
我使用 spring-boot 和 Spring-boot-starter hatoas 开发了一个休息服务。我在自定义 ObjectMapper 时遇到了问题。代码如下:
Application.java
@Configuration
@Import(BillServiceConfig.class)
@EnableAutoConfiguration
@EnableEurekaClient
@ComponentScan({"com.bill"})
@EnableWebMvc
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
public class Application extends WebMvcConfigurerAdapter{
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.indentOutput(true).dateFormat(new SimpleDateFormat("MM-yyyy-dd"));
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
builder.configure(objectMapper);
return builder;
}
依赖关系:
dependencies {
compile "org.springframework.boot:spring-boot-starter-hateoas"
compile "org.springframework.boot:spring-boot-starter-ws"
compile "org.springframework.boot:spring-boot-starter-actuator"
Bill.java:
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonRootName("bills")
public class Bill{
BillController.java:
public ResponseEntity<Resources<Resource<Bill>>> getBills(){
我得到的输出是:
{
_embedded: {
billList:
但我需要用“bills”代替“billList”。这是因为 ObjectMapper 没有得到定制。我是否缺少任何配置,请帮助我解决这个问题。提前致谢。
【问题讨论】:
-
@JsonRootName上的Bill怎么可能对属性名称billList产生任何影响? -
我也遇到了同样的问题,你解决了吗?
-
更多地挖掘 spring 源代码和一些谷歌搜索,我遇到了这个问题,它描述了github.com/spring-projects/spring-hateoas/issues/333
标签: rest jackson spring-boot spring-hateoas