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
这种错误非常常见,因为json转化为javabean的时候,默认为MorphDynaBean类的。如下面的例子:
在json字符串转javabean时,一般的对象,可以直接转,如:一个学生类,属性有姓名、年龄等。
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);
json学习系列(5)-json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to的更多相关文章
- 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方法时,如果它的属性里面包含 ...
- JSON字符串转JavaBean,net.sf.ezmorph.bean.MorphDynaBean cannot be cast to ……
在json字符串转java bean时,一般的对象,可以直接转,如:一个学生类,属性有姓名.年龄等 public class Student implements java.io.Serializab ...
- json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
前台传到后台的json字符串 前台实现这种格式json字符串方式: function contentFun(){ respType = respTypeFun(); return "{\&q ...
- 【明哥报错簿】之json转换报错---net.sf.ezmorph.bean.MorphDynaBean cannot be cast to XXXDO
简单的json和bean转换直接用: public static void main(String[] args) { String s = "{'request': [{'orderCod ...
- json学习系列(8)JSON与JAVA数据的相互转换实例
一.完整案例 先定义一个java实体对象,如下: package com.pcitc.json.cnblog; /** * SimInfo实体对象 * * @Description * @author ...
- json学习系列(7)JSONBuilder的用法
JSONBuilder可以向文件中写入写入json字符串.如下面的例子: public class Test { public static void main(String args[]) thro ...
- json学习系列(6)JSONObject和JSONArray是JDK的集合部分延伸
我一直觉得JSONObject和JSONArray是JDK集合部分的延伸,它们与JDK的List和Map一脉相承.通过研究JSONObject和JSONArray的结构,我们顺便也复习一下JDK的内容 ...
- json学习系列(3)-JSONObject的过滤设置
我们通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值.例如下面的实体类: package com.pcitc.json; /** * Person实体类 * * @Des ...
- json学习系列(2)-生成JSONObject的方法
生成JSONObject一般有两种方式,通过javabean或者map类型来生成.如下面的例子: 先定义一个User实体类: package com.pcitc.json; /** * 用户实体类 * ...
随机推荐
- sqlserver2012相关资源下载
1.输入网址http://www.codeplex.com 2.找到Microsoft SqlServer Product Samples选项 3.进入之后显示如下页面 4.选择SQL Server ...
- poj.1094.Sorting It All Out(topo)
Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28762 Accepted: 99 ...
- MotionEvent常见值
常见的动作常量: public static final int ACTION_DOWN = 0;单点触摸动作 public static final int ACTION_UP ...
- cmake编译dcmtk,并利用vs2010 进行开发mfc 程序
这几天要处理 医学图像数据,经同学推荐 采用 dcmtk 关于 编译 dcmtk 是可参考如下blog 1. http://blog.csdn.net/okaimee/article/details/ ...
- Linux 查看系统用户的登录日志
查看用户登录系统的日志 有两类日志记录用户登录的行为,一是记录登录者的数据,一个是记录用户的登录时间 一,记录用户登录数据 /var/log/wtmp日志文件记录用户登录的数据 ...
- java前三本基础知识总结
基础软件:1:JDK,JRE,JVM(一些参数和作用),GC(机制和算法),Class,Loader(机种作用,加载顺序) 2:环境搭建:JAVA_HOME,path,class 语言基础:引用类型: ...
- Ubuntu14.04server开放rootssh登录权限
刚安装了Ubuntu 14.04 server的虚拟机,普通帐号可以远程登录,但是root不行,输入密码后一直报错: permission denied 最后发现ssh的配置(/etc/ssh/ssh ...
- ubuntu14.04安装OpenVirteX
官网链接: http://ovx.onlab.us/getting-started/installation/ step1: System requirements: Recommended 4 Co ...
- 使用virtualenv搭建独立的Python环境
virtualenv可以搭建虚拟且独立的python环境,可以使每个项目环境与其他项目独立开来,保持环境的干净,解决包冲突问题. 一.安装virtualenv virtualenv实际上是一个pyth ...
- 【OpenStack】OpenStack系列3之Swift详解
Swift安装部署(与keystone依赖包有冲突,需要安装不同版本eventlet) 参考:http://www.server110.com/openstack/201402/6662.html h ...