如何阻止杰克逊的YAML作家引用价值观

2022-09-01 23:18:39

我正在开发一个项目,将文件从JSON转换为YAML。我正在使用以下库的2.8.3版本:

  • 杰克逊核心
  • 杰克逊-数据绑定
  • jackson-dataformat-yaml
  • 杰克逊注释

我的 YAML 序列化代码非常简单:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
ObjectWriter writer = mapper.writer();

try {
    SequenceWriter sw = writer.writeValues(System.out);
    sw.write(tree);
}
catch (IOException e) {
    e.printStackTrace();
}

此代码生成的 YAML 如下所示:

serviceType: "elasticSearch"
displayName: "Elasticsearch Service"
description: "Sample Elastic Search Service"

虽然它是有效的YAML,但我不喜欢值周围的双引号。在 YAML 中不需要它们,这使得编辑生成的文件更加繁琐。有没有人知道如何配置ObjectWriter以使jackson停止将字符串值封装在引号中?


答案 1

有一个名为MINIMIZE_QUOTES的功能将关闭报价。YAMLGenerator

你可以在创建你喜欢的时候启用()它:YAMLFactory

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

答案 2

推荐