Spring Boot 1.4自定义内部Jackson反序列化 [英] Spring Boot 1.4 Customize Internal Jackson Deserialization
问题描述
我正在使用application.properties
中的spring.jackson.deserialization.FAIL_ON_UNKNOWN_PROPERTIES=true
来使反序列化在未知属性上失败,但是无法正常工作.
我什至尝试使用:
@Bean
ObjectMapper objectMapper() {
return Jackson2ObjectMapperBuilder
.json()
.featuresToEnable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.build();
}
但这也不起作用.我想念什么?
根据杰克逊文档.如果要禁用此设置,可以将此选项添加到application.properties
.
spring.jackson.deserialization.fail-on-unknown-properties = false
但是在默认设置下,它可以按预期工作.因此无需任何设置.
这是一个文件春季启动应用程序:
@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; }
}
}
这是用于测试对未知属性的拒绝的集成测试.
@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.
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.
I even tried using :
@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
option is true by default according to Jackson Documentation.
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 property is not defined. So controller sends BadRequest.
这篇关于Spring Boot 1.4自定义内部Jackson反序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!