在使用json-lib 反序列化时,报错:
Exception in thread "main" java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.jn.json.bean.Student
at com.jn.test.Test2.test_reserialize(Test2.java:104)
at com.jn.test.Test2.main(Test2.java:110)
项目结构如下(源代码见附件):
依赖的库如下:
json-lib-2.1-jdk15.jar
测试代码如下:把字符串转化为java对象
public static void test_reserialize(){ // String jsonInput="{\"className\":\"计算机0705\",\"count\":0,\"students\":[{\"addrr\":null,\"age\":0,\"hobby\":\"\",\"name\":\"\"}]}"; String jsonInput="{\"classAttribute\":{\"pp1\":\"vv1\",\"pp2\":\"vv2\"},\"className\":\"计算机0705\",\"count\":0,\"students\":[{\"addrr\":null,\"age\":0,\"attribute\":{\"p2\":\"v2\",\"p1\":\"v1\"},\"hobby\":\"\",\"name\":\"\"}]}"; JSONObject js = JSONObject.fromObject(jsonInput); Class2 one = (Class2) JSONObject.toBean(js, Class2.class); System.out.println(one.getClassName()); Map<String, Object> attribute =one.getStudents().get(0).getAttribute(); System.out.println(attribute); } public static void main(String[] args) { test_reserialize(); }
运行时报错:
解决方法:
使用JsonConfig,修改后的代码如下:
public static void test_reserialize(){ String jsonInput="{\"classAttribute\":{\"pp1\":\"vv1\",\"pp2\":\"vv2\"},\"className\":\"计算机0705\",\"count\":0,\"students\":[{\"addrr\":null,\"age\":0,\"attribute\":{\"p2\":\"v2\",\"p1\":\"v1\"},\"hobby\":\"\",\"name\":\"\"}]}"; JSONObject js = JSONObject.fromObject(jsonInput); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setRootClass(Class2.class); Map<String, Class> classMap = new HashMap<String, Class>(); classMap.put("students", Student.class); // 指定JsonRpcRequest的request字段的内部类型 jsonConfig.setClassMap(classMap); Class2 one = (Class2) JSONObject.toBean(js, jsonConfig); System.out.println(one.getClassName()); Map<String, Object> attribute =one.getStudents().get(0).getAttribute(); System.out.println(attribute); }
主要增加了:
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setRootClass(Class2.class);
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("students", Student.class); // 指定JsonRpcRequest的request字段的内部类型
jsonConfig.setClassMap(classMap);
参考:
http://www.iamcoder.net/tag/java-2/
上述代码所在项目见附件json_lib_demo2.zip
相关推荐
ezmorph-1.0.6.jar和json-lib-2.2.2-jdk15.rar
json架包,包好json-lib-2.2.3-jdk13.jar,json-lib-2.4-jdk14.jar以及附带的支持包ezmorph-1.0.6.jar,commons-logging.jar,commons-lang.jar等
javajson转换包(json-lib-2.4-jdk15.jar,ezmorph-1.0.6.jar,commons-logging-1.1.jar,commons-lang-2.2.jar,commons-httpclient-3.1.jar,commons-digester.jar,commons-collections-3.2.jar,commons-beanutils-...
2、json-lib-2.4-jdk15.jar依赖的jar包:commons-beanutils-1.9.3.jar,commons-collections-3.2.2.jar,commons-lang-2.6.jar,commons-logging-1.2.jar,ezmorph-1.0.6.jar; 3、上述依赖包版本不能再高了,任何一...
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
ezmorph-1.0.3.jar 如果不关联这些包,则会出现以下错误:java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap java.lang...
json2.4相关依赖jar包json-lib-2.4-jdk15.jar/ezmorph-1.0.6.jar 等6个jar包
Json开发所必需的jar包,以及关联的所以jar包。 列表为: ...2)ezmorph-1.0.6.jar; 3)commons-logging-1.1.1.jar; 4)commons-lang-2.0.jar; 5)commons-collections-3.1.jar; 6)commons-beanutils.jar.
json-lib-2.4-jdk15所需全部JAR包,资源清单 json-lib-2.4-jdk15.jar 依赖: ezmorph-1.0.6.jar commons-beanutils-1.8.3.jar commons-lang-2.5.jar morph-1.1.1.jar commons-logging-1.1.1.jar commons-collections-...
json,json.jar,json相关依赖jar包,,json-lib-2.2.3-jdk13.jar/ezmorph-1.0.6.jar,commons-lang-2.4.jar,commons-collections-3.2.1.jar,commons-beanutils.jar
json-lib-2.4-jdk14.jar ezmorph-1.0.6.jar commons-logging.jar commons-lang-2.0.jar commons-collections.jar commons-beanutils.jar
Json开发所必需的jar包,以及关联...2)ezmorph-1.0.6.jar; 3)commons-logging-1.1.1.jar; 4)commons-lang-2.3.jar; 5)commons-collections-3.2.jar; 6)commons-collections-3-3.1.jar; 7)commons-beanutils-1.8.0.jar.
json-lib-2.2.3-jdk13.jar commons-beanutils-1.7.0.jar commons-collections-3.2.1.jar commons-lang-2.4.jar commons-logging-1.1.1.jar ezmorph-1.0.6.jar
json-lib-2.4-jdk15及其全部依赖jar包 commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、commons-lang-2.6.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar、json-lib-2.4-jdk15.jar、xom-1.2.6....
json-lib-2.4-jdk14.jar ezmorph-1.0.6.jar commons-logging.jar commons-lang-2.0.jar commons-collections.jar commons-beanutils.jar
官网发布的json-lib-2.4-jdk...本jar包经过改造,适用于JDK1.4,需要第三方JAR包的支持(commons-beanutils-1.8.2.jar,commons-collections-3.2.jar,commons-lang-2.5.jar,commons-logging-1.1.jar,ezmorph-1.0.6.jar)
json-lib.jar 开发包及依赖包 资源--commons-beanutils-1.8.0.jar commons-collections-3.2.1.jar commons-lang-2.5.jar ezmorph-1.0.6.jar json-lib-2.3-jdk15.jar
json-lib-2.4-jdk15.jar、commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、commons-lang-2.5.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar
json-lib-2.4-jdk15依赖的库文件: 压缩包内容: commons-beanutils-1.8.0.jar commons-collections-3.1....ezmorph-1.0.6.jar json-lib-2.4-jdk15-javadoc.jar json-lib-2.4-jdk15-sources.jar json-lib-2.4-jdk15.jar