【问题标题】:How to I stop jackson's YAML writer from quoting values如何阻止杰克逊的 YAML 编写器引用值
【发布时间】:2017-02-07 00:27:35
【问题描述】:

我正在做一个将文件从 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 停止将字符串值封装在引号中?

【问题讨论】:

    标签: java jackson yaml


    【解决方案1】:

    有一个名为MINIMIZE_QUOTESYAMLGenerator 功能将关闭引号。

    您可以在创建YAMLFactory 时使用enable(),如下所示:

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

    【讨论】:

    • 此解决方案有效。我需要包含 SnakeYAML JAR 的 1.19 版,以解决使用“YAMLGenerator”功能创建的其他依赖项。
    猜你喜欢
    • 2015-02-28
    • 2018-03-20
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多