【发布时间】: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());
【问题讨论】: