微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用带有字典列表的 Java Beans 创建 Yaml

如何解决使用带有字典列表的 Java Beans 创建 Yaml

如何创建字典列表、值为列表的字典或两者的混合

我正在尝试使用带有snakeyaml 库的Java Pojos 构建以下YAML

- name: this is test1
  ec2Group:
    name: example.1
    description: an example test1 group
- name: this is test2
  ec2Group:
    name: example.2
    description: an example test2 group

运行我的代码后得到的是这个

- ec2Group:
    description: an example EC2 group
    name: example
- ec2Group:
    description: an example EC22 group
    name: exampl2e

这是我的 Java 定义

public class AWSSecurityGroupWrapper {
    
    private String name;
    private Ec2Group ec2Group;

}

public class Ec2Group {

    private String name;
    private String description;

}

这是我正在运行的 Java 程序

        Representer representer = new Representer() {
            @Override
            protected NodeTuple representJavaBeanProperty(Object javaBean,Property property,Object propertyValue,Tag customTag) {
                if (propertyValue == null || propertyValue == "") {
                    return null;
                } 
                return super.representJavaBeanProperty(javaBean,property,propertyValue,customTag);
            }
        };

        representer.addclasstag(AWSSecurityGroupWrapper.class,Tag.MAP);
        representer.getPropertyUtils().setSkipMissingProperties(true);
        DumperOptions options = new DumperOptions();
        options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);


        List<AWSSecurityGroupWrapper> groupWrappersList = new ArrayList<>();
        AWSSecurityGroupWrapper awsSecurityGroupWrapper = new AWSSecurityGroupWrapper();
        Ec2Group ec2Group = new Ec2Group();
        ec2Group.setDescription("an example EC2 group");
        ec2Group.setName("example");
        awsSecurityGroupWrapper.setEc2Group(ec2Group);

        StringWriter writer = new StringWriter();
        Yaml yaml = new Yaml(representer,options);
        yaml.dump(awsSecurityGroupWrapper,writer);
        System.out.println(writer);

在这种情况下,Java Pojo 的正确表示是什么,任何帮助表示赞赏。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。