在将 java 对象转换为 yaml 文件时,它还添加了对象名称

While converting java object into yaml file, its also adding the object name

我正在使用 snakeYaml 将 java 对象转储到 yaml 格式的文件中。它正确地转储了数据,但在这样做的同时,它还在文件中附加了完整的对象名称。 这是我用来将对象转储到文件的代码:

PrintWriter writer = new PrintWriter(new File(fileName));
Yaml yaml = new Yaml();
yaml.dump(testObject, writer);

testObject 是自定义对象 Java class。 输出文件包含:

!!org.test.common.TestReportObject
fail: 0
succ: 1
total: 1
tests:
- className: org.test.common.TAPTest
  methods:
  - {fail: false, methodName: test1, stackTrace: null, success: true}

有没有办法,让输出文件不包含

!!org.test.common.TestReportObject

线?

P.S.: 它是输出文件的第一行。我无法添加评论。

Class name (with package) 是 snakeyaml 用于文档的标签。它的默认标签是 MAP & 未打印。因此,将 class 的 TAG 设置为 MAP 不会将其打印在 yml 输出文件中。 - 这也会影响您阅读 yml 的方式。 这是完整的解决方案:

Maven 依赖项:

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

Java代码:

PrintWriter writer = new PrintWriter(new File("pathTo/output.yml"));
        DumperOptions options = new DumperOptions();
        options.setIndent(2);
        options.setPrettyFlow(true);
        options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
                    
        Representer representer = new Representer();
        representer.addClassTag(TestReportObject.class, Tag.MAP);
                    
        Yaml yaml = new Yaml(representer, options);
        yaml.dump(testObject, writer);

在这里,Representer 帮助将您的 class 的标签设置为 MAP——这是默认标签,因此 snakeyaml 不会打印它。所以输出将没有 class 名称作为第一行。

除了第一行,它不会为您的 TestReportObject class 中的其他子 class 添加 class 名称,例如TAP测试