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

gil*_*ilz 13 java yaml jackson

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

  • 杰克逊核心
  • 杰克逊 - 数据绑定
  • 杰克逊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();
}
Run Code Online (Sandbox Code Playgroud)

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

serviceType: "elasticSearch"
displayName: "Elasticsearch Service"
description: "Sample Elastic Search Service"
Run Code Online (Sandbox Code Playgroud)

虽然它是有效的YAML,但我不喜欢围绕值的双引号.你不需要它们在YAML中,它使编辑结果文件更加麻烦.有谁知道如何配置ObjectWriter使jackson停止将String值封装在引号中?

azu*_*rog 13

有一个YAMLGenerator称为MINIMIZE_QUOTES关闭引号的功能.

你可以enable()在创建时YAMLFactory喜欢它:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory().enable(Feature.MINIMIZE_QUOTES));
Run Code Online (Sandbox Code Playgroud)