问题描述
当前,我正在使用YAMLFactory来配置ObjectMapper
进行序列化和反序列化Pojos <=> YAML
,但是尽管尝试了{{ 1}}。
在类级别或字段级别用null
进行注释没有任何影响。我也尝试了用Jackson
注释类,也没有任何影响。使用@JsonInclude(JsonInclude.Include.NON_NULL)
时如何实现?
我发现了类似的question,但用例似乎并不相同。为了清楚起见,我试图完全省略该字段。
编辑:这是一个示例(我也在使用@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
)
YAMLFactory
序列化时:
Lombok
ObjectMapper配置:
@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);
}
}
解决方法
getRedrivePolicy
的getter方法始终返回not-null
对象,即使如此,Optional
仍可以引用null
。在这种情况下,您应该跳过empty
个对象。 Optional
和null
被认为是空的,我们可以使用JsonInclude.Include.NON_EMPTY
。您可以将@JsonInclude(JsonInclude.Include.NON_NULL)
保留在课程级别,并仅为给定的getter添加NON_EMPTY
:
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public Optional<Object> getRedrivePolicy() {
return Optional.ofNullable(redrivePolicy);
}