在使用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
相关推荐
json-lib-2.4-jdk15.jar下载,json-lib是一款简单易用的Java JSON库。它可以将Java对象转换成JSON字符串,也可以将JSON字符串转换成Java对象。json-lib体积小、无依赖,性能表现也不错,适合在各种Java项目中使用。 ...
标题中的"ezmorph-1.0.6.jar"和"json-lib-2.2.2-jdk15.rar"指的是两个不同的Java库,用于处理数据转换和JSON操作。ezmorph是一个Java库,提供了对象到对象的转换功能,而json-lib是另一个库,专门用于处理JSON...
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-...
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...
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、上述依赖包版本不能再高了,任何一...
5. `ezmorph-1.0.3.jar`: EzMorph库,提供了对象转换工具,可能用于在JSON处理中进行数据类型的转换。 6. `commons-logging.jar`: Apache Commons Logging,是一个日志抽象层,允许在项目中灵活地切换日志实现。 7...
总结一下,`json-lib-2.4-jdk15.jar`和`ezmorph-1.0.2.jar`是两个在Java开发中处理JSON数据的关键工具。它们提供了JSON序列化、反序列化、类型转换等功能,对于构建Web服务、API接口以及处理JSON格式的数据交换具有...
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.
5. **依赖管理**:作为一款库,`json-lib`通常与其他库如`net.sf.ezmorph`、`net.sf.json-lib`等有依赖关系。在提供的“全部依赖jar包”中,包含了所有必要的外部库,确保项目可以正常运行。 6. **开发工具集成**:...
另一个提到的依赖是`ezmorph-1.0.6.jar`,这是一个Java库,主要用于对象的动态转型。在处理JSON时,有时候我们需要将JSON数据映射到Java对象,或者反之。`ezmorph`库提供了这样的功能,能够帮助我们动态地转换数据...
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
5. **ezmorph-1.0.6.jar**:EZMorph库提供了Java对象之间转换的简单机制。在json-lib中,它用于处理数据类型的动态转换,帮助将非标准的数据类型转换为适合JSON表示的形式。 6. **commons-logging-1.2.jar**:...
在文件列表中的"jsonlib需要jar包",这可能是指包含了`json-lib`库及其所有依赖的JAR文件。在实际项目中,将这些JAR文件添加到项目的类路径(classpath)中,就可以使用`json-lib`提供的功能,而无需通过Maven或其他...
json-2.4所依赖的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;以及和struts2整合所需的jar包:struts2-json-plugin...
1. 创建JSON对象:可以使用`net.sf.json.JSONObject`和`net.sf.json.JSONArray`类来创建和操作JSON对象。 2. 将Java对象转换为JSON:使用`JSONObject.fromObject()`或`JSONArray.fromObject()`方法将Java对象转换为...
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