【问题标题】:Java- reading YAML file - Exception in thread "main" Cannot create property=Envs in readerJava-读取YAML文件-线程“主”中的异常无法在阅读器中创建属性=环境
【发布时间】:2023-03-29 20:40:02
【问题描述】:

当加载一个 YAML 文件(使用 SnakeYAML)时,我得到一个异常“线程“主”中的异常无法为 JavaBean=com.java.Envs@3d82c5f3 创建属性=Envs 在“阅读器”第 1 行第 1 列中: 环境: 1)我做错了什么? -env 应该从 Envs 的同一位置开始:?

Envs: - env: "QA" firstName: "John" lastName: "Doe" age: 31 contactDetails: - type: "mobile" number: 123456789 - type: "landline" number: 456786868 homeAddress: line: "Xyz, DEF Street" city: "City Y" state: "State Y" zip: 345657 - env: "Dev" firstName: "John" lastName: "Doe" age: 31 contactDetails: - type: "mobile" number: 123456789 - type: "landline" number: 456786868 homeAddress: line: "Xyz, DEF Street" city: "City Y" state: "State Y" zip: 345657 我有以下类来处理这个 YAML。

    public class Envs {
        List<Environment_Generic> envList;

        public List<Environment_Generic> getEnvList() {
            return envList;
        }

        public void setEnvList(List<Environment_Generic> envList) {
            this.envList = envList;
        }
    }

public class Environment_Generic {

    private String env;
    private String firstName;

    public String getEnv() {
        return env;
    }

    public void setEnv(String env) {
        this.env = env;
    }

    private String lastName;
    private int age;
    private List<Contact> contactDetails;
    private Address homeAddress;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<Contact> getContactDetails() {
        return contactDetails;
    }

    public void setContactDetails(List<Contact> contactDetails) {
        this.contactDetails = contactDetails;
    }

    public Address getHomeAddress() {
        return homeAddress;
    }

    public void setHomeAddress(Address homeAddress) {
        this.homeAddress = homeAddress;
    }

}

使用以下代码,我正在检索详细信息。

   public static Envs loadYAML(String file) throws IOException{

        Yaml yaml = new Yaml(new Constructor(Envs.class));
        InputStream inputStream = new FileInputStream(new File("src/main/resources/" + file));
        Envs envs = yaml.load(inputStream);
        return envs;
    }
Envs envs=loadYAML("test1.yml");
       System.out.println(envs.getEnvList().get(0).getHomeAddress().getCity());

【问题讨论】:

    标签: java yaml


    【解决方案1】:

    检查Documentation regarding typesafe collections,您的文档的根元素是不必要的。删除根 Envs 参数。

    目前,您的对象图是一个名为 EnvsEnvironment_Generic 列表。但是,您想要(并尝试映射)只是列表本身。

    【讨论】:

      猜你喜欢
      • 2013-09-26
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 2018-07-19
      • 2020-09-15
      • 2020-04-10
      相关资源
      最近更新 更多