在将 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测试
我正在使用 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测试