Spring Boot 1.4 自定义内部 Jackson 反序列化 [英] Spring Boot 1.4 Customize Internal Jackson Deserialization

查看:30
本文介绍了Spring Boot 1.4 自定义内部 Jackson 反序列化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆