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

Block unknown json properties on certain classes

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

    @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);
    }

我想要这个,所以如果有人向我的服务发送错误 属性 我会阻止他们。但是,我的服务连接到其他服务,如果它们发送未知变量,它也会失败。当我的其他服务与当前服务通信时,我希望忽略未知变量。

我试过使用

@JsonIgnoreProperties(ignoreUnknown=true)

要覆盖 FAIL_ON_UNKNOWN_PROPERTIES 但它不起作用。

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

您可能遇到的一种解决方案是创建两个单独的 ObjectMappers,一个忽略未知属性,另一个抛出异常。您可以直接在您的 Object Mapper 范围上禁用 fail on unknow 属性,如下所示:objectMapper.disable(FAIL_ON_UNKNOWN_PROPERTIES);

我们的想法是,您仍然可以创建一个全局范围的对象映射器,如您的示例所示,您几乎可以在任何地方使用,除了那些需要在未知属性上失败的服务,无论上下文是什么。