【问题标题】:Converting a list of POJO's to a YAML file in JAVA将 POJO 列表转换为 JAVA 中的 YAML 文件
【发布时间】:2018-06-14 15:11:11
【问题描述】:

我在 StackOverflow 中找到了很多示例,但我想他们都没有遇到我遇到的这个问题:

我正在尝试将 POJO 列表转换为 YAML 格式并将文件写入磁盘。 我在我的 Pom 中使用具有这种依赖关系的 Snake Yaml:

 <dependency>
   <groupId>org.yaml</groupId>
   <artifactId>snakeyaml</artifactId>
   <version>1.18</version>
  </dependency>

我的代码:

Pojo po = new Pojo();
po.setProperty1("po1");
po.setProperty2("po2");
po.setProperty3("po3");

DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
options.setPrettyFlow(true);

Yaml yaml = new Yaml(options);
String s = yaml.dump(po);

Output :
- !! com.test.Pojo
  Property1:"po1"
  Property2:"po2"
  Property3:"po3"

Desired output:
- Property1:"po1"
  Property2:"po2"
  Property3:"po3"

当我使用yaml.dump(myObject) 时,它还会打印对象名称及其属性。有没有办法获得所需的输出?

【问题讨论】:

标签: java yaml


【解决方案1】:

您可以使用Representer

将类标签设置为Tag.MAP 应该隐藏类名。

Representer representer = new Representer();
representer.addClassTag(Pojo.class, Tag.MAP);

【讨论】:

  • 非常感谢@Davide Lorenzo Marino - 这肯定解决了问题,但它添加了大括号并且不遵守块样式,representer.addClassTag(Product.class, Tag.MAP);代表.setDefaultFlowStyle(DumperOptions.FlowStyle.FLOW);这就是我获得输出的方式-> {property1: po1, property2: po2, property3:po3 } 我正在寻找严格的块格式
  • 我玩弄了一些选项,这个带有 dumperOptions 和表示器的初始化 Yaml 对象解决了这个问题......谢谢!!
猜你喜欢
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多