在序列化时对SnakeYaml应用格式化。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在序列化时对SnakeYaml应用格式化。相关的知识,希望对你有一定的参考价值。

我正在使用 snakeYaml (snakeyaml-engine-2.1) 来序列化一个 pojo。目前,序列化产生了如下输出

name: "OuterYamlElementName"
label: "OuterYamlElementLabel"
fields:
  label: "outerYamlFieldLabel"
  value: "outerYamlFieldValue"
  isRequired: true
  toggle: "+Test-Outer-Yaml-Field"

但我希望yaml能这样生成

name: "OuterYamlElementName"
label: "OuterYamlElementLabel"
fields:
  - {label: "outerYamlFieldLabel", value: "outerYamlFieldValue", isRequired: true, toggle: "+Test-Outer-Yaml-Field"}

我知道他们有办法通过类来定制输出。DumpSettings 在蛇形图中通过设置器

setCanonical
setDefaultFlowStyle
etc

然而,我还没有能够产生这种输出,因为不幸的是。我希望产出的Yaml是比较大的(上面的例子只包括了一个片段,所以才会有这样的要求)。此外,第二个Yaml样本是由蛇Yaml反序列化的,所以它应该能够产生同样的输出,我想。有人知道创建第二个例子中的结构需要哪些设置吗?先谢谢你了。

答案

我还不能使 snakeyaml-engine-2.1 产生任何结果。

然而,我尝试了另一个YAML库(snakeyaml v.1.10),并生成了下面的示例字符串(但是,没有双引号)。

!!com.example.demo.so.yaml.FormatYaml$Pojo
field: {label: outerYamlFieldLabel2, required: true, toggle: +Test-Outer-Yaml-Field2,
  value: outerYamlFieldValue2}
fields:
- {label: outerYamlFieldLabel, required: true, toggle: +Test-Outer-Yaml-Field, value: outerYamlFieldValue}
label: OuterYamlElementName
name: OuterYamlElementName

以上是关于在序列化时对SnakeYaml应用格式化。的主要内容,如果未能解决你的问题,请参考以下文章

使用 SnakeYaml 处理缺失的字段

Snakeyaml - 如何对流样式进行自定义控制

使用SnakeYAML Java将用户作为嵌套在块序列中的块映射添加到yml文件

snakeyaml生成yaml文件空值显示问题

如何更改snakeyaml中的隐式类型(int to double)

如何解决snakeyaml NoSuchMethodError:getStyle()