gpt4 book ai didi

java - 停止 Jackson 自定义日期序列化器写入空值

转载 作者:行者123 更新时间:2023-12-01 04:40:57 25 4
gpt4 key购买 nike

我使用 Jackson 来处理 JSON,我有一个自定义日期序列化器,用于按照我想要的方式格式化日期,但它不遵守 @JsonSerialize(include = Inclusion.NON_NULL) 注释。序列化器如下。

如果日期为空,它仍然会被写入。如果我不使用自定义序列化程序,一切都很好,不会写入空值。我的问题是,JsonSerializer 类中是否需要执行某些操作来阻止写入空值?

public class DateSerializer extends JsonSerializer<Date>
{
@Override
public final void serialize(Date date, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException
{
SimpleDateFormat sdf = new SimpleDateFormat(MY_FORMAT);
jgen.writeString(sdf.format(date));
}
}

最佳答案

事实证明它根本不是序列化器,而是默认为 include=ALWAYS 的 @JsonSerialize 注释,它覆盖了类上的 include=NON_NULL 。因此更改 getter 的注释是有效的:

更改:

@JsonSerialize(using = DateSerializer.class)
public Date getDate()
{
return date;
}

至:

@JsonSerialize(using = DateSerializer.class,
include=JsonSerialize.Inclusion.NON_NULL)
public Date getDate()
{
return date;
}

关于java - 停止 Jackson 自定义日期序列化器写入空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com