我有一个XML文件,我想使用Jackson反序列化。但是我得到了上述异常。
<students>
<student>
<Name>Tapishnu2</Name>
<Age>25</Age>
<Department>Computer</Department>
</student>
<student>
<Name>Tapishnu1</Name>
<Age>25</Age>
<Department>Computer</Department>
</student>
<student>
<Name>Tapishnu2</Name>
<Age>25</Age>
<Department>Computer</Department>
</student>
<student>
<Name>Tapishnu3</Name>
<Age>25</Age>
<Department>Computer</Department>
</student>
</students>
我有像这样的POJO课程
@JacksonXmlRootElement(localName = "students")
public class Students {
@JacksonXmlProperty(localName = "student")
private Student[] student;
/*public Students(){
}*/
public Students( Student[] student) {
super();
this.student = student;
}
public Student[] getStudent() {
return student;
}
public void setStudent(Student[] student) {
this.student = student;
}
@Override
public String toString() {
return "students [student=" + Arrays.toString(student) + "]";
}
}
public class Student {
@JacksonXmlProperty(localName = "Name")
String Name;
@JacksonXmlProperty(localName = "Age")
String Age;
@JacksonXmlProperty(localName = "Department")
String Department;
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
public String getAge() {
return Age;
}
public void setAge(String Age) {
this.Age = Age;
}
public String getDepartment() {
return Department;
}
public void setDepartment(String department) {
Department = department;
}
@Override
public String toString() {
return "Student [Name=" + Name + ", Age=" + Age + ", Department="
+ Department + "]";
}
}
Main class
file = new File("C://Avatar//Students.xml");
System.out.println(file.canRead());
XmlMapper mapper = new XmlMapper();
Students openCredentials = mapper.readValue(file, Students.class);
我收到以下错误 com.fasterxml.jackson.databind.JsonMappingException:找不到类型[simple type,class com.Team.Students]的合适构造函数:无法从JSON对象实例化(缺少默认构造函数或创建者,或者可能需要添加/启用类型信息) ?) 在[来源:C:\ Avatar \ Students.xml; line:2,column:3]
我想注释有问题。我是杰克逊的新手。所以我们将不胜感激。
答案 0 :(得分:1)
Jackson需要一个no-arg构造函数来将JSON反序列化为Java对象。在反序列化过程中,Jackson直接使用属性/方法而不是构造函数。
尝试添加
public Students() {
super();
this.student = new Student[]{};
}
或者
public Students() {
this(new Student[]{});
}