在某些类上阻止未知的json属性

时间:2018-08-23 21:27:26

标签: java spring jackson jackson2

我有一个配置,如果启用,则会阻止未知变量通过。

//fadeout
setTimeout(function(){$(".foot").fadeTo(1000, 0);}, 4000);
//change src
setTimeout(function(){$(".foot").attr("src","foot.png")}, 5000);
//fade in
setTimeout(function(){$(".foot").fadeTo(1000, 1)},6000)


setTimeout(function(){$(".foot").fadeTo(1000, 0);}, 10000);
//change src
setTimeout(function(){$(".foot").attr("src","follow.png")}, 11000);
//fade in
setTimeout(function(){$(".foot").fadeTo(1000, 1)},12000)

我想要这样做,因此,如果有人向我的服务发送了不正确的财产,我将阻止他们。但是,我的服务连接到其他服务,并且如果它们发送未知变量,它也会失败。当我的其他服务与当前服务对话时,我希望忽略未知变量。

我尝试使用

    @Value("${json.failOnUnknown:false}")
    private boolean failOnUnknown;

    Jackson2ObjectMapperBuilder build = new Jackson2ObjectMapperBuilder();

    if(!failOnUnknown) {
        build.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
    }
    else {
        build.featuresToEnable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
    }

要覆盖FAIL_ON_UNKNOWN_PROPERTIES,但是它不起作用。

关于如何阻止某些类而不是其他类中的未知变量的任何想法?

1 个答案:

答案 0 :(得分:0)

您可能会遇到的一种解决方案是创建两个单独的ObjectMappers,一种忽略未知属性,另一种抛出异常。您可以直接在对象映射器作用域上禁用unknow属性失败,如下所示:objectMapper.disable(FAIL_ON_UNKNOWN_PROPERTIES);

这个想法是,您仍然可以创建示例中所示的全局作用域对象映射器,几乎可以在所有地方使用它,除了那些需要在上下文中失败的未知属性的服务之外。