Java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to

在使用JSONObject.toBean的时候,得到的Bean里面的复杂数据类型不能转换成需要的对象类型。

demo:

创建两个实体类Teacher和Student:Teacher中有一个List类型的私有属性

package com.edu.xukai;  

/**
* @author xukai
*
*/
public class Student { private String stuNo; private String stuName; public Student() {
} public Student(String stuNo, String stuName) {
this.stuNo = stuNo;
this.stuName = stuName;
} // getter setter @Override
public String toString() {
return "Student [stuNo=" + stuNo + ", stuName=" + stuName + "]";
} }

  

package com.edu.xukai;  

import java.util.List;  

/**
* @author xukai
*
*/
public class Teacher { private String teaId; private String teaName; private List<Student> stus; public Teacher() {
} public Teacher(String teaId, String teaName, List<Student> stus) {
this.teaId = teaId;
this.teaName = teaName;
this.stus = stus;
}
//getter setter }

  

测试之前,需要导入相应的jar文件。

需要使用JSONObject,使用的jar文件是json-lib-2.2.3-jdk15.jar

下面是可能缺少jar文件导致的错误和对应的jar:

Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
commons-lang-2.4.jar

Caused by: java.lang.ClassNotFoundException: net.sf.ezmorph.Morpher
ezmorph-1.0.6.jar

Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
commons-logging-1.1.1.jar

Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.map.ListOrderedMap
commons-collections-3.2.1.jar

Caused by: java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean
commons-beanutils-1.7.0.jar

jar下载链接:点击下载

测试类:

package com.edu.xukai;  

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import net.sf.json.JSONObject; /**
* @author xukai
*
*/
public class TestJSONObject { public static void main(String[] args) {
Student student_1 = new Student("学号1", "学生1");
List<Student> stus = new ArrayList<Student>();
stus.add(student_1);
Teacher teacher_1 = new Teacher("编号1", "教师1", stus);
JSONObject obj = JSONObject.fromObject(teacher_1);
System.out.println("JSON格式的Teacher->" + obj.toString());
Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class);
try {
Student studentBean = teacherBean.getStus().get(0);
System.out.println(studentBean);
} catch (Exception e) {
System.out.println("出现异常");
e.printStackTrace();
}
} }

  运行可以看到控制台打印结果:

JSON格式的Teacher->{"stus":[{"stuName":"学生1","stuNo":"学号1"}],"teaId":"编号1","teaName":"教师1"}
出现异常
java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.edu.xukai.Student
at com.edu.xukai.TestJSONOb 
ject.main(TestJSONObject.java:25)

解决办法:使用JSONObject.toBean(jsonObject, beanClass, classMap)

package com.edu.xukai;  

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import net.sf.json.JSONObject; /**
* @author xukai
*
*/
public class TestJSONObject { public static void main(String[] args) {
Student student_1 = new Student("学号1", "学生1");
List<Student> stus = new ArrayList<Student>();
stus.add(student_1);
Teacher teacher_1 = new Teacher("编号1", "教师1", stus);
JSONObject obj = JSONObject.fromObject(teacher_1);
System.out.println("JSON格式的Teacher->" + obj.toString()); // 定义一个Map
Map<String, Class<Student>> map = new HashMap<String, Class<Student>>();
map.put("stus", Student.class); // key为teacher私有变量的属性名
// 使用JSONObject.toBean(jsonObject, beanClass, classMap)
Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class, map);
try {
Student studentBean = teacherBean.getStus().get(0);
System.out.println(studentBean);
} catch (Exception e) {
System.out.println("出现异常");
e.printStackTrace();
}
} }

控制台打印结果:

JSON格式的Teacher->{"stus":[{"stuName":"学生1","stuNo":"学号1"}],"teaId":"编号1","teaName":"教师1"}
Student [stuNo=学号1, stuName=学生1]

  

java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to的更多相关文章

  1. json解析出现:java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to XXX

    感谢大佬:https://blog.csdn.net/one_ink/article/details/99817676 一.出错原因 当我们利用json解析中的toBean方法时,如果它的属性里面包含 ...

  2. json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to

    前台传到后台的json字符串 前台实现这种格式json字符串方式: function contentFun(){ respType = respTypeFun(); return "{\&q ...

  3. java.util.LinkedHashMap cannot be cast to xxx 和 net.sf.ezmorph.bean.MorphDynaBean cannot be cast to xxx

    java.util.LinkedHashMap cannot be cast to com.entity.Person 使用mybatis, resultMap映射的是实体类Person, 查询出来的 ...

  4. json学习系列(5)-json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to

    最近在使用json的时候,报了下面的错误: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.lang.String 这种错误非常常见, ...

  5. JSON字符串转JavaBean,net.sf.ezmorph.bean.MorphDynaBean cannot be cast to ……

    在json字符串转java bean时,一般的对象,可以直接转,如:一个学生类,属性有姓名.年龄等 public class Student implements java.io.Serializab ...

  6. net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.util.Map

    public static void main(String[] arg0) { String reString = "{" + "\"code\": ...

  7. 【明哥报错簿】之json转换报错---net.sf.ezmorph.bean.MorphDynaBean cannot be cast to XXXDO

    简单的json和bean转换直接用: public static void main(String[] args) { String s = "{'request': [{'orderCod ...

  8. Caused by: java.lang.ClassNotFoundException: net.sf.ezmorph.Morpher

    1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher a ...

  9. Java中使用json时java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决

    下面代码: public static void main(String[] args) { JSONObject obj = new JSONObject(); obj.put("msg& ...

随机推荐

  1. 走进java

    Java 技术体系 1.java技术语言 2.各种硬件平台上的java虚拟机 3.Class文件格式 4.Java API类库 5.来自商业机构和开源社区的第三方Java类库 我们把Java程序设计语 ...

  2. 项目出现小红叉,类名上带有 Implicit错误

    Implicit super constructor Object() is undefined for default constructor. Must define an explicit co ...

  3. java连接数据库插入数据中文乱码

    解决方案: jdbc连接数据库,向表中插入中文查看数据乱码:修改数据库连接url为jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8 注意 ...

  4. MyEclipse设置文件的编码格式

    在MyEclipse中复制properties文件的时候,发现一个问题,在EditPlus中打开文件中文可以正常显示,并且是UTF-8的编码格式. 但是将这个文件复制到MyEclipse中再打开时,中 ...

  5. Sallen-Key Active Butterworth Low Pass Filter Calculator

    RC 2nd Order Passive Low Pass Filter The cut-off frequency of second order low pass filter is given ...

  6. NVIDIA-docker报错:docker-ce (= 5:18.09.0~3-0~ubuntu-xenial) but 18.06.0~ce~3-0~ubuntu is to be installed

    报错: The following packages have unmet dependencies: nvidia-docker2 : Depends: docker-ce (= 5:18.09.0 ...

  7. Verilog 加法器和减法器(8)-串行加法器

    如果对速度要求不高,我们也可以使用串行加法器.下面通过状态机来实现串行加法器的功能. 设A=an-1an-2-a0, B=bn-1bn-2-b0,是要相加的两个无符号数,相加的和为:sum=sn-1s ...

  8. XMPP增加删除好友

    在现阶段的通信服务中,各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互 ...

  9. spring注解@Scheduled中fixedDelay、fixedRate和cron表达式的区别

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  10. VS中项目的循环引用的问题

    这个道理很简单,要编译A,首先要编译A引用的项目B,要编译项目B,必须首先编译B引用的项目A. 那么你说应该先编译哪个项目. 如果你非要循环引用,你不要让A引用项目B,而是直接引用项目B生成的b.dl ...