Java Jackson序列化可选,YAML为空值

Java Jackson序列化可选,YAML为空值,java,java-8,jackson,yaml,optional,Java,Java 8,Jackson,Yaml,Optional,目前,我正在使用配置ObjectMapper来序列化和反序列化Pojos YAML,但是它在序列化中写入null值,尽管尝试了Jackson中的常用技巧 在类级别或字段级别使用@JsonInclude(JsonInclude.Include.NON_NULL)进行注释没有影响。我还尝试过用@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)注释类,但也没有任何影响。在使用YAMLFactory时,如何实现这一点 我发现了一个类似的用例,

目前,我正在使用配置
ObjectMapper
来序列化和反序列化
Pojos YAML
,但是它在序列化中写入
null
值,尽管尝试了
Jackson
中的常用技巧

在类级别或字段级别使用
@JsonInclude(JsonInclude.Include.NON_NULL)
进行注释没有影响。我还尝试过用
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
注释类,但也没有任何影响。在使用
YAMLFactory
时,如何实现这一点

我发现了一个类似的用例,但用例似乎并不相同。为了清楚起见,我试图完全省略这个字段

编辑:下面是一个例子(我也在使用
Lombok

ObjectMapper配置:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.MINIMIZE_QUOTES));                                                          
mapper.registerModule(new Jdk8Module());

getRedrivePolicy
getter方法始终返回
notnull
对象,即使如此,
Optional
也可以引用
null
。在这种情况下,您应该跳过
空的
对象
Optional
with
null
被认为是空的,我们可以使用
JsonInclude.Include.NON_empty
。您可以在类级别保留
@JsonInclude(JsonInclude.Include.NON\u NULL)
,并仅为给定的getter添加
NON\u EMPTY

@JsonInclude(JsonInclude.Include.NON_EMPTY)
public Optional<Object> getRedrivePolicy() {
    return Optional.ofNullable(redrivePolicy);
}
@JsonInclude(JsonInclude.Include.NON_EMPTY)
公共可选getRedrivePolicy(){
返回可选。不可用(redrivePolicy);
}

您能否提供一个简单的例子,如链接问题中重现您的问题?理解您的案例并帮助解决此问题会容易得多。添加了Pojo及其序列化方式。我应该注意的是,
NON_EMPTY
仅在getter上工作,而不是在类级别。
ObjectMapper mapper = new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.MINIMIZE_QUOTES));                                                          
mapper.registerModule(new Jdk8Module());
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public Optional<Object> getRedrivePolicy() {
    return Optional.ofNullable(redrivePolicy);
}