json 학습 시리즈(5)-json 오류 해석 넷.sf.ezmorph.bean.MorphDynaBean cannot be cast to
5825 단어 bean
public class Student implements java.io.Serializable{
private static final long serialVersionUID = 1L;
private String sname;
private Integer age;
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
문자열에서 javabean으로 전환할 때 다음 방법을 사용할 수 있습니다.
String str = "[{\"sname\":\"admin\",\"age\":20}]";
//// {} , ,
if (str.indexOf("[") != -1) {
str = str.replace("[", "");
}
if (str.indexOf("]") != -1) {
str = str.replace("]", "");
}
JSONObject jobj = JSONObject.fromObject(str);
Student s = (Student) JSONObject.toBean(jobj,Student.class);
이렇게 하면 문제가 없지만 속성에 복잡한 유형이 포함되어 있으면 속성에 List, Map, ArrayList와 유사하면 안 된다.오류 발생: MorphDynaBean cannot be cast to ******.JSONObject에서toBean에서 변환된 클래스에 집합이 있으면 Map classMap = new HashMap () 을 정의할 수 있습니다.classMap에서put변환할 클래스의 집합 이름입니다. 예를 들어:classMap.put("teachers", Teacher.class);그리고 toBean () 에 매개 변수를 추가합니다. 예를 들어:Student student = (Student) JSONObject.toBean(str, Student.class, classMap); 다음은 작은 예를 하나 들자.
public class Student implements java.io.Serializable{
private static final long serialVersionUID = 1L;
private String sname;
private Integer age;
private List < String > courses;
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public List getCourses()
{
return courses;
}
public void setCourses(List courses)
{
this.courses = courses;
}
}
전환할 때 이렇게 써야 한다.
Map classMap = new HashMap();
classMap.put("courses",String.class);
Student student =( Student) JSONObject.toBean(str, Student.class, classMap);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
DI & IoC & Bean객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다. 첫번째 방법은 A객체가 B와 C 객체를 New 생성자를 통해 직접 생성하는 방법이고, 두번째 방법은 외부에서 생성된 객체를 setter()...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.