Jackson YAML 序列化 - 防止多行写入

时间:2021-03-02 01:42:09

标签: java jackson jackson-databind

我正在尝试从 bean 创建一个 YAML 文件。其中一个字段超过 80 个字符。当我使用 objectMapper 将 bean 写入 YAML 文件时,这些值打印在两行不同的行中。

- code: abcd1234
  label-en_US: Lorem Ipsum is simply dummied text of the printing and typesetting
    industry --> this line should not be here
ObjectMapper mapper = new ObjectMapper(new YAMLFactory().enable(MINIMIZE_QUOTES));

mapper.writeValue(Paths.get("path/to/file").toFile(), getData());

1 个答案:

答案 0 :(得分:1)

因此,您不希望长文本包含在多行中,这会让您考虑是否在 YAMLFactory 中有一个选项可以控制它。

然后检查文档,即 YAMLFactory 的 javadoc,看看是否有任何有用的内容。查看 list of methods,您会注意到 disable(YAMLGenerator.Feature f)enable(YAMLGenerator.Feature f) 方法,并考虑是否有 YAMLGenerator.Feature 可以满足您的需求。

查看 list of features,您会发现一个名为 SPLIT_LINES,其描述为:

<块引用>

传递给 SnakeYAML 的选项,用于确定是否将较长的文本内容自动拆分为多行。

默认启用功能以符合 SnakeYAML 默认值以及与 2.5 及更早版本的向后兼容性。

在用你研究技能的威力跳了一小段胜利之舞之后......好吧,不,你不这样做,因为不得不在这里领导表明缺乏这样的技能,但是您会为自己在未来努力提高自己的研究技能而惊叹……您将 disable(SPLIT_LINES) 添加到代码中。

YAMLFactory yamlFactory = YAMLFactory.builder()
        .enable(MINIMIZE_QUOTES)
        .disable(SPLIT_LINES)
        .build();
ObjectMapper mapper = new ObjectMapper(yamlFactory);