jackson 如何使用fasterxml操作yaml而不添加字段的默认值

n3schb8v  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(130)

我目前正在使用更快的xml将yaml转换为java对象,更改它并将其转换回yaml。
但是我看到当我读yaml的时候,所有的字段都被这些默认值填充了。所以当我写回yaml的时候,默认值也被填充了。我该怎么避免呢?
第一个
输入yaml:

worktask:
  disable: true

电流输出yaml:

worktask:
  disable: false
  topicName: null
  lockDuration: 0

所需的yaml:

worktask:
  disable: false
s8vozzvw

s8vozzvw1#

试试看:

YAMLMapper mapper = new YAMLMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
YAMLFactory factory = new YAMLFactory(mapper);
factory.enable(YAMLGenerator.Feature.MINIMIZE_QUOTES);
ObjectMapper mapper = new ObjectMapper(factory);

然后,使用这个类别:

public class Worker {
  private Boolean disable;
  private String name;
  private Long duration;
}

未给定的字段现在应该是null,并且null字段不应该被序列化。您可能需要查看optional types with Jackson以获得更复杂的设置。

相关问题