【发布时间】:2019-03-17 22:56:19
【问题描述】:
我正在尝试以某种方式格式化我的 Jackson Yaml 序列化。
employees:
- name: John
age: 26
- name: Bill
age: 17
但是,当我序列化对象时,这是我得到的格式。
employees:
-
name: John
age: 26
-
name: Bill
age: 17
有什么办法可以去掉数组中对象开头的换行符?这纯粹是个人偏好/人类可读性问题。
这些是我当前在 YAMLFactory 上设置的属性:
YAMLFactory yamlFactory = new YAMLFactory()
.enable(YAMLGenerator.Feature.MINIMIZE_QUOTES) //removes quotes from strings
.disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER)//gets rid of -- at the start of the file.
.enable(YAMLGenerator.Feature.INDENT_ARRAYS);// enables indentation.
我查看了 Jackson 中 YAMLGenerator 的 java 文档,并查看了有关 stackoverflow 的其他问题,但我找不到执行我想做的事情的选项。
我已经尝试过 CANONICAL_OUTPUT、SPLIT_LINES 和 LITERAL_BLOCK_STYLE 属性,最后一个是在设置 MINIMIZE_QUOTES 时自动设置的。 CANONICAL_OUTPUT 似乎在数组周围添加了括号。 SPLIT_LINES 和 LITERAL_BLOCK_STYLE 与多行字符串的处理方式有关。
【问题讨论】:
-
由于 Jackson 使用 SnakeYAML 进行 YAML 处理,因此需要在 SnakeYAML 中配置一个选项,以便 Jackson 可以设置该选项。 afaik SnakeYAML 中没有这样的选项(查看它的 DumperConfig),所以它似乎不可能。
-
我遇到了同样的问题。如果这只是一个可读性问题并且文件不是一遍又一遍地生成,您可以简单地在 IntelliJ Idea 中加载它并选择“代码 - 格式”,所有内容都被格式化,没有换行符。
标签: java serialization jackson yaml snakeyaml