gpt4 book ai didi

java - 避免 SnakeYaml 转储中的 JavaBean 根标签

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:29 24 4
gpt4 key购买 nike

当我转储以下类的实例时:

class BrooklynApplicationEntity{
private String id;
private String location;
private String name;
List<BrooklynServiceEntity> services;

//getters and setters
...
}

使用下一个代码:

 DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
options.setCanonical(false);
options.setDefaultScalarStyle(DumperOptions.ScalarStyle.PLAIN);
SkipEmptyAndNullRepresenter skipEmptyAndNullRepresenter=
new SkipEmptyAndNullRepresenter();

Yaml yaml=new Yaml(skipEmptyAndNullRepresenter, options);
yaml.dump(this.getBrooklynApplicationEntity(), file);

我获得了下一个yaml。

!!org.tomat.translate.brooklyn.entity.BrooklynApplicationEntity
id: dbApp
location: localhost
name: DatabaseApp
services:
- !!org.tomat.translate.brooklyn.entity.JBossBrooklynService
brooklynConfigProperties:
port.http: 80+
id: JBossMainWebServer
location: AWS
name: JBoss Main Web Server
- !!org.tomat.translate.brooklyn.entity.JBossBrooklynService
id: JBossSecondWebServer
location: localhost
name: JBoss

我想避免输出 YAML 中的标签,因此我添加了以下指令,How to hide bean type in snakeyaml 中是如何描述的, ImplicitTagsTest .

    skipEmptyAndNullRepresenter.addClassTag(JBossAgnosticElement.class, Tag.MAP);
skipEmptyAndNullRepresenter.addClassTag(JBossAgnosticElement.class, Tag.SEQ);

但是,标签 !!org.tomat.translate.brooklyn.entity.BrooklynApplicationEntity!!org.tomat.translate.brooklyn.entity.JBossBrooklynService 不是已删除。

最佳答案

我已经解决了这个问题。当我向类添加隐式标签(例如 TAG.Map)时,我必须使用完整的类名。例如,为了避免 !!org.tomat.translate.brooklyn.entity.JBossAgnosticElement,下一条指令是必要的。

skipEmptyAndNullRepresenter.addClassTag(
org.tomat.translate.brooklyn.entity.JBossAgnosticElement.class, Tag.MAP);

而不是

skipEmptyAndNullRepresenter.addClassTag(JBossAgnosticElement.class, Tag.MAP);

关于java - 避免 SnakeYaml 转储中的 JavaBean 根标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26515519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com