Spring Boot 1.4 自定义内部 Jackson 反序列化 [英] Spring Boot 1.4 Customize Internal Jackson Deserialization
问题描述
我在 application.properties
中使用 spring.jackson.deserialization.FAIL_ON_UNKNOWN_PROPERTIES=true
使反序列化在未知属性上失败,但它不起作用.
I am using spring.jackson.deserialization.FAIL_ON_UNKNOWN_PROPERTIES=true
in the application.properties
to make deserialization fail on unknown properties but its not working.
我什至尝试使用:
@Bean
ObjectMapper objectMapper() {
return Jackson2ObjectMapperBuilder
.json()
.featuresToEnable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.build();
}
但这也不起作用.我错过了什么?
But this also didn't work. What am I missing?
推荐答案
FAIL_ON_UNKNOWN_PROPERTIES
选项默认为 true 根据 杰克逊文档.
FAIL_ON_UNKNOWN_PROPERTIES
option is true by default according to Jackson Documentation.
如果您想禁用此设置,您可以将此选项添加到 application.properties
.
If you want to disable this setting you may add this option to application.properties
.
spring.jackson.deserialization.fail-on-unknown-properties = false
但在默认设置下它按预期工作.所以不需要任何设置.
But in default settings it works as expected. So no need for any setting.
这是一个文件弹簧启动应用程序:
This is one file spring boot application:
@RestController
@SpringBootApplication
public class TestOptionApplication {
public static void main(String[] args) {
SpringApplication.run(TestOptionApplication.class, args);
}
@PostMapping("/test")
public void formTest(@RequestBody final HelloForm form) {
}
public static class HelloForm {
private String name;
public String getName() { return name; }
public void setName(final String name) { this.name = name; }
}
}
这是用于测试对未知属性的拒绝的集成测试.
This is the integration test for testing rejection on unknown properties.
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestOptionApplicationTest {
@Autowired
private WebApplicationContext context;
@Test
public void testFailOnUnknownPropertiesOption() throws Exception {
final String text = "{"name": "test", "title": "test"}";
MockMvcBuilders
.webAppContextSetup(this.context)
.build()
.perform(post("/test").contentType(MediaType.APPLICATION_JSON).content(text))
.andExpect(status().isBadRequest());
}
}
title 属性未定义.所以控制器发送 BadRequest.
title property is not defined. So controller sends BadRequest.
这篇关于Spring Boot 1.4 自定义内部 Jackson 反序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!