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

public class Student implements java.io.Serializable{

    /**
* @Fields serialVersionUID : TODO
*/
private static final long serialVersionUID = -1943961352036134112L;
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;
} }

由字符串转java bean时可以使用以下方法:

JSONObject jobj = JSONObject.fromObject(str);
Student s = (Student) JSONObject.tobean(jobj,Student.class);

是没有问题的,但是如果属性中含有复杂的类型,当其中属性有类似List , Map ,ArrayList、自定义的类型,如List<Teacher> teachers, 就不可以了。 会报错:MorphDynaBean cannot be cast to con.test……

在JSONObject.toBean的时候如果转换的类中有集合,可以先定义Map<String, Class> classMap = new HashMap<String, Class>();在classMap中put你要转换的类中的集合名,像:classMap.put("teachers", Teacher.class);然后在toBean()的时候把参数加上, 像:Student student=(Student) JSONObject.toBean(str, Student.class, classMap);

比如我定义了如下类型:

import java.util.List;
/**
*
* <P>Tiltle: AnalysisModel.java </P>
* <P>Description:模型类 </P>
* @author biyutong
* @date Jun 11, 2012 9:37:54 AM
* @version:V1.0
*/
public class AnalysisModel implements java.io.Serializable{ /**
* 固定条件
*/
private List<Condition> regularCondtionList;//
/**
* 动态条件
*/
private List<ConditionField> dynamicConFieldList;
/**
* 结果
*/
private List<ResultField> resultField;
/**
* 获取前多少条数据
*/
private Integer topnum;
/**
* 顺序还是随机
*/
private String sortFlag;
/**
* 备注
*/
private String remark;
/**
* 模型名称
*/
private String modelName;
/**
* 对应的xml文件名称
*/
private String fileName;
public List<Condition> getRegularCondtionList() {
return regularCondtionList;
}
public void setRegularCondtionList(List<Condition> regularCondtionList) {
this.regularCondtionList = regularCondtionList;
}
public List<ConditionField> getDynamicConFieldList() {
return dynamicConFieldList;
}
public void setDynamicConFieldList(List<ConditionField> dynamicConFieldList) {
this.dynamicConFieldList = dynamicConFieldList;
}
public Integer getTopnum() {
return topnum;
}
public void setTopnum(Integer topnum) {
this.topnum = topnum;
}
public String getSortFlag() {
return sortFlag;
}
public void setSortFlag(String sortFlag) {
this.sortFlag = sortFlag;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
} public String getModelName() {
return modelName;
}
public void setModelName(String modelName) {
this.modelName = modelName;
}
public List<ResultField> getResultField() {
return resultField;
}
public void setResultField(List<ResultField> resultField) {
this.resultField = resultField;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
} }

在转化的时候需要这样来写:

Map<String, Class> classMap = new HashMap<String, Class>();

classMap.put("regularCondtionList", Condition.class);

classMap.put("dynamicConFieldList", ConditionField.class);

classMap.put("resultField", ResultField.class);

AnalysisModel analysisModel=(AnalysisModel) JSONObject.toBean(str, AnalysisModel.class, classMap);

from: http://biyutong.iteye.com/blog/1566708

JSON字符串转JavaBean,net.sf.ezmorph.bean.MorphDynaBean cannot be cast to ……的更多相关文章

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

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

  2. 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 这种错误非常常见, ...

  3. 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方法时,如果它的属性里面包含 ...

  4. 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, 查询出来的 ...

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

    Java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to 在使用JSONObject.toBe ...

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

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

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

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

  8. Java 对象,数组 与 JSON 字符串 相互转化

    当 Java 对象中包含 数组集合对象时,将 JSON 字符串转成此对象. public class Cart{} public class MemberCoupon{} public class C ...

  9. Java基础97 json插件的使用(java对象和json字符串对象之间的转换)

    1.需要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-19 * */ public class ...

随机推荐

  1. Ztree的简单使用和后台交互的写法(一)

    一.引入ztree的头文件 <!-- 引入ztree/--> <script type="text/javascript" src="${pageCon ...

  2. Java数据结构——优先级队列

    //================================================= // File Name : PriorityQueue_demo //------------ ...

  3. Unreal模型文件调查

    http://en.wikipedia.org/wiki/UE_Viewer http://www.gildor.org/en/projects/umodel http://wiki.beyondun ...

  4. getElement的几中属性介绍

    1.getElementById("a");   获取div的id (注意:getElementById  是没有s的,getElementsByTagName()是带s的) 这种 ...

  5. PageBase

    namespace Webform.App { public class PageBase : System.Web.UI.Page { } public interface IService< ...

  6. JS 语言的Function 解析

    1.最基本的作为一个本本分分的函数声明使用. 复制代码代码如下: function func(){} 或 var func=function(){};  2.作为一个类构造器使用: 复制代码代码如下: ...

  7. python 多线程就这么简单

    原文地址:http://www.cnblogs.com/fnng/p/3670789.html

  8. php 数组排序以及按照某个字段排序

    经常,开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序非常有用.PHP提供了一些适合多种数组的排序函数,这些函数允许你在数组内部对元素进行排列,也允许用很多不同的方法对它们进行重新排序. ...

  9. 在IE6、IE7中实现块元素的inline-block效果

    在IE6.IE7中实现块元素的inline-block效果有以下两种方法: 1先使用display:inline-block属性触发layout,然后再定义display:inline让块元素呈现内联 ...

  10. C#实现Excel模板导出和从Excel导入数据

    午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.Office.Interop.Excel 3.封装的Exc ...