JSON字符串转javabean,报net.sf.ezmorph.bean.MorphDynaBean cannot be cast to.....
来源:互联网 发布:csgo 服务器优化 编辑:程序博客网 时间:2024/06/10 16:41
当json里含有list,list里含有map或其他对象时,我们就可能有这种错误出现:
JSON串:
{"seqNo":2,"taskName":"入库","taskDiscription":"这是入库状态","status":"0","performUser":"发起人","rollbackTaskId":"","guideId":"",
"managerOfType":"author",
"formFieldSettingData":{"formId":"1","taskName":"入库",
"settingData":[{"model":"planCode","fieldstatus":"1"},{"model":"planName","fieldstatus":"1"},{"model":"planType","fieldstatus":"1"},
{"model":"planBriefContent","fieldstatus":"1"},{"model":"groupApprovalNum","fieldstatus":"1"},{"model":"planYear","fieldstatus":"2"},
{"model":"planExeCuteMonth","fieldstatus":"2"},{"model":"visitDays","fieldstatus":"2"},{"model":"visitCountrys","fieldstatus":"1"},
{"model":"countryReceptionUnit","fieldstatus":"1"},{"model":"visitPersons","fieldstatus":"1"},{"model":"costCommitment","fieldstatus":"1"},
{"model":"groupUnit","fieldstatus":"1"},{"model":"attendGroupUnit","fieldstatus":"1"},{"model":"accordedFile","fieldstatus":"1"},
{"model":"annualBudget","fieldstatus":"1"},{"model":"comment","fieldstatus":"1"}]}}
public class SettingData implements Serializable { private static final long serialVersionUID = 1L; private String model; private String fieldstatus; public String getModel() { return model; } public void setModel(String model) { this.model = model; } public String getFieldstatus() { return fieldstatus; } public void setFieldstatus(String fieldstatus) { this.fieldstatus = fieldstatus; }}
1、用最普通的方法:是能完成解析的
JSONObject data1 = JSONObject.fromObject(tTt.getFormFieldSettingData());String formId = data1.getString("formId");System.out.println(formId);String settingData = data1.getString("settingData");JSONArray arr1 = JSONArray.fromObject(settingData);System.out.println(arr1);System.out.println(arr1.get(0).toString());for (int j = 0; j < arr1.size(); j++) {JSONObject jsonObject = arr1.getJSONObject(j);String model = jsonObject.getString("model");String fieldstatus = jsonObject.getString("fieldstatus");System.out.println(model + "+" + fieldstatus);}
TTemplateTask ttempTask = (TTemplateTask) JSONObject.toBean(jsonObject, TTemplateTask.class);在存储时是能成功的,但是取值时String model=tTt.getFormFieldSettingData().getSettingData().get(j).get("model").toString();就会报出MorphDynaBean cannot be cast to 。。。异常,
原因是我在TTemplateTask这个实体类中存放了一个List<Map> settingData来存放后面的值,而JSONObject.toBean(jsonObject, TTemplateTask.class)在做反序列化是并没有按照你想的那样将值反序列化成map类型存放到你的实体类中,从断点中可以看到是以MorphDynaBean这种类型的方式存在了。所以会抛出转化异常。
解决办法:就要转化成map的那一串json 作为一个小的实体类拿出来,public class SettingData implements Serializable { private static final long serialVersionUID = 1L; private String model; private String fieldstatus; public String getModel() { return model; } public void setModel(String model) { this.model = model; } public String getFieldstatus() { return fieldstatus; } public void setFieldstatus(String fieldstatus) { this.fieldstatus = fieldstatus; }}然后:Map classMap = new HashMap();classMap.put("settingData",SettingData.class);ttempTask = (TTemplateTask) JSONObject.toBean(jsonObject, TTemplateTask.class,classMap);底层方法调用截图:json先转化含有的内层对象如map,再转化成对象这样就能在转化为Bean的时候先将map类型放进去再转化为对象了String model=tTt.getFormFieldSettingData().getSettingData().get(j).getModel()
0 0
- 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字符串转javabean-net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.util.Map
- net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- json转换报错 net.sf.ezmorph.bean.MorphDynaBean cannot be cast to cn.xxt.common.domain
- json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- json教程系列(5)-json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- 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
- JSON字符串转javabean,MorphDynaBean cannot be cast to...问题解决
- 使用json-lib-2.4-jdk15转javabean,报net.sf.ezmorph.bean.MorphDynaBean转换异常
- net.sf.ezmorph.bean.MorphDynaBean cannotbe cast to xxx
- net.sf.ezmorph.bean.MorphDynaBean cannotbe cast to xxx
- net.sf.ezmorph.bean.MorphDynaBean cannotbe cast to xxx
- JSON字符串转javabean,MorphDynaBean cannot be cast to ……
- JSON字符串转javabean,MorphDynaBean cannot be cast to ……
- windows系统命令
- CUDA:异步并发执行的概念
- Java压缩算法性能比较
- java.lang.OutOfMemoryError: Java heap space
- 辣鸡模板库
- JSON字符串转javabean,报net.sf.ezmorph.bean.MorphDynaBean cannot be cast to.....
- 【OI结构】邻接表与邻接矩阵
- c++获取系统错误提示!getLastError()
- 20161215C语言基础13_分支语句
- Java获取昨天的时间
- Ubuntu下apt-get命令详解
- Windwos 64位系统添加opencv_contrib库至OpenCV3.1.0
- android studio弹出窗口太大,超过屏幕的底边框,无法点击下面的按钮?
- 第16周实践项目三——点结构体(2)