【问题标题】:Allow NULL map values in a custom JsonSerializer在自定义 JsonSerializer 中允许 NULL 映射值
【发布时间】:2018-09-11 09:43:34
【问题描述】:

我在 spring 中有一个全局对象映射器,其属性设置如下:

getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_EMPTY);

这工作正常,并在序列化时排除了所有空值。

但我有一个自定义序列化程序,用于将私有 Map<String, Object> data = new LinkedHashMap<>() 作为成员变量的类。该地图的键具有空值,我想将其包含在输出中。类级别或成员级别 @JsonInclude 不起作用。尝试覆盖 isEmpty 并始终返回 false,但它没有用。

在 Jackson 2.5 之前自动包含 NULL 映射值,但在升级到 2.9+ 后开始发生这种情况。任何帮助将不胜感激。

【问题讨论】:

    标签: spring jackson2 jackson-databind


    【解决方案1】:

    基本上,您正在寻找的是仅用于一个类的自定义序列化器,对吗? 你可以找到它是如何实现的here

    然后你可以将序列化器注册到你的类

    @JsonSerialize(using = CustomSerializer.class)
    class YourClass{
    

    这会将自定义序列化程序注册到您感兴趣的类,这样您也可以添加空值。

    【讨论】:

    • 您好,感谢您的评论。我在上面提到过,我确实有一个自定义序列化程序,并且我也在编写具有空值的键,但是在序列化时它们被忽略了。
    • 在以前的版本中,我们有 {@JsonSerialize(using = CustomSerializer.class, include = JsonSerialize.Inclusion.ALWAYS)},现在它已被弃用且无法正常工作。
    • 哦,对了,对不起,我在理解这个问题时遇到了问题。很抱歉给您带来不便。
    猜你喜欢
    • 2018-04-22
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2020-10-05
    • 2014-12-13
    • 2019-10-27
    相关资源
    最近更新 更多