在加载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());
答案 0 :(得分:0)
选中Documentation regarding typesafe collections,则不需要文档的根元素。删除根 Envs 参数。
当前,您的对象图是名为 Envs 的 Environment_Generic 的单个列表。但是,您只想(并尝试映射)列表本身。