Java-读取YAML文件-线程“主”中的异常无法在读取器中创建property = Envs

时间:2019-11-03 13:57:40

标签: java yaml

在加载YAML文件(使用SnakeYAML)时,我收到异常“线程“ main”中的异常”,无法为JavaBean=com.java.Envs@3d82c5f3创建property = 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());

1 个答案:

答案 0 :(得分:0)

选中Documentation regarding typesafe collections,则不需要文档的根元素。删除根 Envs 参数。

当前,您的对象图是名为 Envs Environment_Generic 的单个列表。但是,您只想(并尝试映射)列表本身。