目前我正在使用YAML工厂 https://fasterxml.github.io/jackson-dataformats-text/javadoc/yaml/2.11/配置ObjectMapper
序列化和反序列化Pojos <=> YAML
,然而它写道null
尽管尝试了通常的技巧,但序列化中的值Jackson
.
注释用@JsonInclude(JsonInclude.Include.NON_NULL)
对类级别或字段级别没有影响。我也尝试过用注释类@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
也没有影响。使用时如何实现这一目标YAMLFactory
?
我找到了类似的question https://stackoverflow.com/questions/53163648/jackson-yaml-serialize-null-as-empty-value但用例似乎并不相同。需要明确的是,我试图完全省略该字段。
编辑:这是一个例子(我也在使用Lombok
)
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class QueueProperties extends Properties {
@JsonProperty("QueueName")
private String queueName;
@JsonProperty("RedrivePolicy")
private RedrivePolicy redrivePolicy;
public Optional<RedrivePolicy> getRedrivePolicy() {
return Optional.ofNullable(redrivePolicy);
}
}
序列化时:
Properties:
QueueName: 471416d1-3643-4d5a-a033-65f22757dcaf-chargeback-paypal-ingestion-ingest_dispute
RedrivePolicy: null
对象映射器配置:
ObjectMapper mapper = new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.MINIMIZE_QUOTES));
mapper.registerModule(new Jdk8Module());
getRedrivePolicy
getter 方法总是返回not-null
对象,即便如此,Optional
可以参考null
。在这种情况下,您应该跳过empty
对象。Optional
with null
被认为是空的,我们可以使用JsonInclude.Include.NON_EMPTY
为了它。你可以保留@JsonInclude(JsonInclude.Include.NON_NULL)
在班级级别并添加NON_EMPTY
仅适用于给定的吸气剂:
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public Optional<Object> getRedrivePolicy() {
return Optional.ofNullable(redrivePolicy);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)