JSON字符串转javabean,MorphDynaBean cannot be cast to ……
来源:互联网 发布:superslide.2.1.js 编辑:程序博客网 时间:2024/05/04 09:03
在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);
0 0
- JSON字符串转javabean,MorphDynaBean cannot be cast to...问题解决
- JSON字符串转javabean,MorphDynaBean cannot be cast to ……
- JSON字符串转javabean,MorphDynaBean cannot be cast to ……
- JSON字符串转javabean,MorphDynaBean cannot be cast to ……
- JSON字符串转javabean-net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.util.Map
- JSON字符串转javabean,报net.sf.ezmorph.bean.MorphDynaBean cannot be cast to.....
- JSON字符串转javabean,报net.sf.ezmorph.bean.MorphDynaBean cannot be cast to.....
- JSON字符串转javabean,报net.sf.ezmorph.bean.MorphDynaBean cannot be cast to.....
- JSON字符串转javabean,报net.sf.ezmorph.bean.MorphDynaBean cannot be cast to.....
- Json解析出错 :MorphDynaBean cannot be cast to
- json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- 使用JSONObject类转换字符串含有集合类型的属性 JSON字符串转换object错误:MorphDynaBean cannot be cast to com.softright.bean.Tes
- net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- json教程系列(5)-json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- json转换报错 net.sf.ezmorph.bean.MorphDynaBean cannot be cast to cn.xxt.common.domain
- java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.xxx.xxx
- cannot be cast to
- 求出在字符串S中包含字符串T的最小字符串
- Android开发之重要组件
- 为 SVN WGET YUM 设置 HTTP 代理
- Android开发之重要组件(2)
- 我的开发规范一——项目命名规则
- JSON字符串转javabean,MorphDynaBean cannot be cast to ……
- 嵌入式GUI
- cocos2d-x 3.x 引入【#include "cocos-ext.h"】头文件出现编译错误
- Linux上安装JDK环境变量配置
- Codeforces Round #301 (Div. 2) E
- WAMP配置虚拟主机
- 分布式一致性Paxos算法学习笔记:算法详解
- win7的telnet远程服务如何开启?
- 【Objective-C学习-1】第一个OC程序