@Deprecated 的替代品 SerializationFeature.WRITE_EMPTY_JSON_ARRAYS

Alternatives to @Deprecated SerializationFeature.WRITE_EMPTY_JSON_ARRAYS

我很难找到修复 SerializationFeature.WRITE_EMPTY_JSON_ARRAYS 上的弃用警告的正确方法。

Javadocs 指出

Since 2.8 there are better mechanism for specifying filtering; specifically using com.fasterxml.jackson.annotation.JsonFormat or configuration overrides.

但我认为

ObjectMapper.configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, false);

配置覆盖,尽管上面的行会触发弃用警告。

还有哪些其他替代方法不会用另一个注释污染模型 类?我想全局配置行为。

在 class 级别,您可以像这样使用 @JsonInclude:

@JsonInclude( JsonInclude.Include.NON_EMPTY )
public class MyClass ...

此外,在映射器级别,您可以执行以下操作:

mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);

Javadoc 完全错误。

  1. "using com.fasterxml.jackson.annotation.JsonFormat":在很多情况下注解显然并没有更好,最值得注意的是当你不能注解 POJOS 因为你不拥有它们,或者当您需要覆盖注释以获得与您通常想要的不同的行为时。

  2. "configuration overrides":那太好了,但据我所知,没有其他优先于注释的覆盖。

从用户的角度来看,不推荐使用的选项唯一不好的地方是它已被弃用,因此将来可能不再受支持。这当然是一个真正的问题 - 有一天你可能不得不在重要的安全更新和保持你的代码工作而不重写之间做出选择。