【发布时间】:2020-08-25 16:00:26
【问题描述】:
目前我正在使用YAMLFactory 配置ObjectMapper 以序列化和反序列化Pojos <=> YAML,但是尽管尝试了Jackson 中的常用技巧,但它在序列化中写入null 值。
在类级别或字段级别使用@JsonInclude(JsonInclude.Include.NON_NULL) 进行注释没有影响。我也尝试用@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) 注释类,也没有任何影响。使用YAMLFactory 时如何实现这一点?
我找到了类似的question,但用例似乎不一样。为了清楚起见,我试图完全省略该字段。
编辑:这是一个例子(我也在使用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 配置:
ObjectMapper mapper = new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.MINIMIZE_QUOTES));
mapper.registerModule(new Jdk8Module());
【问题讨论】:
-
您能否提供一个简单的示例,例如在链接问题中重现您的问题?了解您的情况并帮助解决此问题会容易得多。
-
添加了 Pojo 及其序列化方式。
标签: java java-8 jackson yaml optional