我正在使用spring-boot,並且想要自定義創建的ObjectMapper。Jackson2ObjectMapperBuilder啓用字段可見性任何
我想要做的就是能夠序列化沒有getter或setter的對象。在這之前可以通過在ObjectMapper上放置JsonAutoDetect.Visibility.ANY來完成。
但是我如何使用Jackson2ObjectMapperBuilder bean啓用此功能?我目前正在公開?
我正在使用spring-boot,並且想要自定義創建的ObjectMapper。Jackson2ObjectMapperBuilder啓用字段可見性任何
我想要做的就是能夠序列化沒有getter或setter的對象。在這之前可以通過在ObjectMapper上放置JsonAutoDetect.Visibility.ANY來完成。
但是我如何使用Jackson2ObjectMapperBuilder bean啓用此功能?我目前正在公開?
您可以使用Jackson2ObjectMapperBuilder
子類覆蓋configure(ObjectMapper)
方法:即春季啓動提供
@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder() {
return new Jackson2ObjectMapperBuilder() {
@Override
public void configure(ObjectMapper objectMapper) {
super.configure(objectMapper);
objectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
}
};
}
如果你想保持ObjectMapper通過spring.jackson配置*屬性,那麼你最好不要定義您自己的Jackson2ObjectMapperBuilder bean(有關詳細信息,請在JacksonAutoConfiguration類中檢查JacksonObjectMapperBuilderConfiguration)。
你可以做的,而不是是這樣的:
@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder mapperBuilder) {
return mapperBuilder.build().setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
}
我不得不排除HypermediaAutoConfiguration以使此解決方案起作用,請參見[SpringFox依賴性破壞我的Spring上下文](http://stackoverflow.com/questions/31307883/springfox-dependency-breaking-my-spring-context/32281734#32281734) – 0xced
我花了一天半的使用不同的設置來發揮。 所以我設法解決它(1.3.2.RELEASE)時:
@Configuration
註釋的配置類(而不是從WebMvcConfigurerAdapter
擴展)@EnableWebMvc
然後Jackson2ObjectMapperBuilder objectMapperBuilder
解決方案是 工作,但在spring.jackson.serialization.indent_output: true
屬性被忽略。
我終於完成了
@Autowired(required = true)
public void configeJackson(ObjectMapper objectMapper) {
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)
.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
}
但是,這一切是益智我。我寫了一個關於所有這些魔術的任何解釋的問題,以便有一些不確定和解決問題的方法不是 反覆試驗方法:Are there any Spring Boot documentation for understanding how web mvc configuration is work?
應用程序無法從引導1.4.0開始, java.lang.NullPointerException:null \t at org.springframework.data.rest.core.UriToEntityConverter。 (UriToEntityConverter.java:71)〜[spring-data-rest-core-2.5.2.RELEASE.jar:na]' – xenoterracide
在此之前...'PersistentEntity , ?> entity = entities.getPersistentEntity(rawType) ;''其中'rawType'是'JsonDeserializer' ... – xenoterracide
它似乎只是作爲將Jackson20bjectMapperBuilder定義爲子類的結果而發生的 – xenoterracide