【问题标题】:Jackson YAML Serialization - Prevent Multiline WritingJackson YAML 序列化 - 防止多行写入
【发布时间】:2021-03-02 01:42:09
【问题描述】:

我正在尝试从 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());

【问题讨论】:

    标签: java jackson jackson-databind


    【解决方案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);
    

    【讨论】:

    • 很高兴你找到了答案,但你居高临下真的很蹩脚。这个网站是人们提问的地方,即使是像您这样的人可以找到答案的地方。我会礼貌地请你将来好。
    猜你喜欢
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2023-02-08
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多