阻止某些 类 上的未知 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);
。
我们的想法是,您仍然可以创建一个全局范围的对象映射器,如您的示例所示,您几乎可以在任何地方使用,除了那些需要在未知属性上失败的服务,无论上下文是什么。
我有一个配置,如果启用则阻止未知变量通过。
@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);
。
我们的想法是,您仍然可以创建一个全局范围的对象映射器,如您的示例所示,您几乎可以在任何地方使用,除了那些需要在未知属性上失败的服务,无论上下文是什么。