`

net.sf.ezmorph.bean.MorphDynaBean cannotbe cast to xxx

阅读更多
net.sf.ezmorph.bean.MorphDynaBean cannotbe cast to xxx

在操作json的数据格式的时候,如果没有指明数据类型,那么只能是基本类型或者是String类型,不能出现复杂数据类型。

for(Map<String, Object> map : datas){

            String gw_id = map.get("GW_ID").toString();

            gw_id =  gw_id.substring(0, 14)+"1"+gw_id.substring(15);

            map.put("GW_ID", gw_id);

            map.put("UPDATE_TIME", new Date().getTime());

            map.put("CREATE_TIME", map.get("CREATE_TIME"));

            map.put("LAST_COLLECT_TIME", map.get("LAST_COLLECT_TIME"));

            Set<String> keys =  map.keySet();

            for(String key:keys){

                if(null == map.get(key)){

                    map.put(key, "");

                }

            }

        }

String jsondata = JSONArray.fromObject(datas).toString();

JSONArray jsonarray = JSONArray.fromObject(jsondata );

List<Map<String, Object>> objs = (List<Map<String, Object>>)JSONArray.toCollection(jsonarray, Map.class);



在这里,因为得到json字符串的时候用的是 JSONArray.fromObject(collenction),所有,在讲json字符串转换成json对象的时候,也只能用JSONArray.toCollection,并且,一定要带上后面的class参数。



将json字符串转换成对应的json对象以后,在遍历json对象时

for(Map<String, Object> data : objs)

data.get("LAST_COLLECT_NUM")

此时,get()方法得到的是对象,并且是只能转换成基本数据类型或者是String类型的,如果强制转化成复杂的类型,会提示这个错误。





再如:

Teacher类中,有三个属性。

   private String teaId; 

 

    private String teaName; 

 

    private List<Student> stus; 



Teacher teacher_1 = new Teacher("编号1", "教师1", stus); 

JSONObject obj = JSONObject.fromObject(teacher_1);

这一步,将Teacher 对象转换成json字符串的时候,没有任何的问题。



下面,将JSONObject 转换成Teacher 对象,如果,不加后面的class参数,也会报这儿错误。加了后,这一步也正常。

Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class); 



Student studentBean = teacherBean.getStus().get(0);

当从teacherBean 对象中取出stus属性的值时候,就会提示:

java.lang.ClassCastException:net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.edu.xukai.Student





用这种方式可以解决:

map.put("stus", Student.class);


Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class, map);


其中map对象是teacherBean对象中各个属性的类型,map额key是属性每次,value是属性的类型。




JSONArray.toArray(jsonArray, objectClass, classMap)

JSONArray.toList(jsonArray, objectClass, classMap)

也支持这样的方式。
分享到:
评论

相关推荐

    json-lib net.sf.ezmorph.bean.MorphDynaBean cannot be cast to xxx

    标题中的“json-lib net.sf.ezmorph.bean.MorphDynaBean cannot be cast to xxx”是一个典型的Java运行时异常,通常发生在尝试将一个对象强制转换为其不兼容类型的实例时。在这个特定的情况下,`MorphDynaBean`是...

    Json所需6个JAR包(net.sf.ezmorph.MorpherRegistry异常

    `net.sf.ezmorph.MorpherRegistry`异常通常是由于Ezmorph库没有正确导入或者版本不匹配导致的。Ezmorph是一个Java库,它提供了一种方便的方式来转换对象的类型,这在处理JSON时可能会用到,特别是在将JSON字符串转换...

    java.lang.ClassNotFoundException: net.sf.ezmorph.MorpherRegistry

    在这个特定的情景中,错误提示 "java.lang.ClassNotFoundException: net.sf.ezmorph.MorpherRegistry" 指出在处理JSON转换时,系统试图加载名为 `net.sf.ezmorph.MorpherRegistry` 的类,但找不到该类的定义。...

    Json所需6个JAR包(net.sf.ezmorph.MorpherRegistry异常)所需要的java 包

    这里提到的"Json所需6个JAR包"可能是指一个特定的JSON处理解决方案,而`net.sf.ezmorph.MorpherRegistry`异常通常与EZMorph库有关,这是一个用于Java对象转换的工具,有时在处理JSON时会用到。 EZMorph库提供了一种...

    Json所需6个JAR包(net.sf.ezmorph.MorpherRegistry异常).rar

    Json所需6个JAR包(net.sf.ezmorph.MorpherRegistry异常),在json使用中我们经常会遇到net.sf.ezmorph.MorpherRegistry异常,这些jar包就是为了解决这个问题

    net.sf.json需要的jar

    标题中的"net.sf.json需要的jar"指的是在Java开发中使用net.sf.json库时所需的依赖JAR文件。net.sf.json是开源项目,它提供了一系列的API来处理JSON(JavaScript Object Notation)数据格式,便于Java应用程序与JSON...

    net.sf.json2.4

    标题“net.sf.json2.4”指的是一个特定版本的JSON库,它是在Java环境中处理JSON数据的一个工具包。这个库的主要功能是帮助开发者在Java应用程序中生成和解析JSON(JavaScript Object Notation)字符串,这是一种轻量...

    Java中使用Json的net.sf.json包

    此外,`net.sf.json`库依赖于一些Apache Commons组件,如ezmorph-1.0.6.jar、commons-beanutils-1.8.0.jar、commons-logging-1.1.1.jar、commons-collections-3.1.jar和commons-lang-2.5.jar。这些库提供了额外的...

    net.sf.json.JsonObject需要的jar包

    通常,这些jar包可能包括json-lib的主库和其他可能的依赖,比如`net.sf.ezmorph.jar`(因为json-lib在处理某些转换时会用到ezmorph库)。 在实际应用中,导入`net.sf.json.JSONObject`的步骤如下: 1. 将提供的jar...

    JSON(net.sf.json.JSONArray)需要的jar包

    2. 可能还有其他依赖的jar包,例如`commons-lang3.jar`(用于语言工具),`commons-beanutils.jar`(用于Bean操作),`commons-collections.jar`(用于集合操作),`ezmorph.jar`(用于对象转换)等,这些都是Json-...

    java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher异常解决方法

    在这个特定的场景中,问题聚焦于 `net.sf.ezmorph.Morpher` 类。`ezmorph` 是一个Java库,用于对象到对象的转换,它提供了动态类型转换的功能。当我们尝试使用包含 `Morpher` 类的代码,但缺少相应的依赖时,就会...

    net.sf.json jar包下载

    net.sf.json jar包包含了一下:可以用来解析json,具体操作可以看小编的博客。 commons-lang.jar commons-beanutils.jar commons-collections.jar commons-logging.jar ezmorph.jar json-lib-2.2.2-jdk15.jar

    net.sf.json.JSONObject需要引用几个JAR包

    5. **ezmorph-1.0.4.jar**:EZMorph是一个Java库,用于在运行时将对象从一种类型转换为另一种类型,`json-lib`可能用它来进行数据类型转换。 6. **commons-logging-1.1.jar**:Apache Commons Logging提供了一个...

    net.sf.json.JSONObject需要的jar包

    net.sf.json.JSONObject所需要的jar包 commons-beanutils-1.9.3.jar commons-collections-3.2.2 commons-lang-2.6 commons-logging-1.2 ezmorph-1.0.6 json-lib-2.4-jdk15

    net.sf.json jar包

    net.sf.json jar包含以下:  commons-lang.jar  commons-beanutils.jar  commons-collections.jar  commons-logging.jar  ezmorph.jar  json-lib-2.2.2-jdk15.jar

    net.sf.json使用的lib(包括依赖lib)

    net.sf.json使用的lib(包括依赖lib) 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar 5.ezmorph.jar 6.json-lib-2.2.2-jdk15.jar

    net.sf.json.JSONObject需要用到的6个jar包

    java开发中需要jsonObject,jsonArray需要用到6个jar包,net.sf.json.JSONObject commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-lang-2.5.jar commons-logging.jar ezmorph-1.0.3.jar json-lib-...

    net.sf.json包

    net.sf.json依赖jar包,其中包括: commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-lang-2.5.jar commons-logging.jar ezmorph-1.0.3.jar json-lib-2.4-jdk15.jar

    JSON中,java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher问题解决

    在本案例中,问题出在`net.sf.ezmorph.Morpher`类无法被正确地加载。`Morpher`是EZ Morph库中的一个核心类,主要用于对象之间的数据转换。 `EZ Morph`是一个开源项目,它提供了一种方便的方式来转换Java对象。在...

Global site tag (gtag.js) - Google Analytics