`

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

阅读更多

在使用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

 

 

  • 大小: 17 KB
  • 大小: 14.4 KB
  • 大小: 32.9 KB
0
0
分享到:
评论

相关推荐

    json-lib-2.4-jdk15.jar下载

    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

    标题中的"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以及附带的支持包

    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等

    java+json转换包(json-lib-2.4-jdk15.jar,ezmorph-1.0.6.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)

    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

    使用json-lib-2.2.2-jdk15.jar所要用到的jar包

    ezmorph-1.0.3.jar 如果不关联这些包,则会出现以下错误:java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap java.lang...

    json-lib-2.4-jdk15及其依赖包

    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.json2.4

    5. `ezmorph-1.0.3.jar`: EzMorph库,提供了对象转换工具,可能用于在JSON处理中进行数据类型的转换。 6. `commons-logging.jar`: Apache Commons Logging,是一个日志抽象层,允许在项目中灵活地切换日志实现。 7...

    json-lib-2.4-jdk15.jar和其他关联的jar包

    总结一下,`json-lib-2.4-jdk15.jar`和`ezmorph-1.0.2.jar`是两个在Java开发中处理JSON数据的关键工具。它们提供了JSON序列化、反序列化、类型转换等功能,对于构建Web服务、API接口以及处理JSON格式的数据交换具有...

    json-lib-2.3-jdk15.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包

    5. **依赖管理**:作为一款库,`json-lib`通常与其他库如`net.sf.ezmorph`、`net.sf.json-lib`等有依赖关系。在提供的“全部依赖jar包”中,包含了所有必要的外部库,确保项目可以正常运行。 6. **开发工具集成**:...

    json2.4相关依赖jar包json-lib-2.4-jdk15.jar/ezmorph-1.0.6.jar 等6个jar包

    另一个提到的依赖是`ezmorph-1.0.6.jar`,这是一个Java库,主要用于对象的动态转型。在处理JSON时,有时候我们需要将JSON数据映射到Java对象,或者反之。`ezmorph`库提供了这样的功能,能够帮助我们动态地转换数据...

    json-lib-2.4-jdk15所需全部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相关依赖jar包,json-lib-2.2.3-jdk13.jar/ezmorph-1.0.6.jar 等6个jar包

    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-jdk13对应jar包大全

    5. **ezmorph-1.0.6.jar**:EZMorph库提供了Java对象之间转换的简单机制。在json-lib中,它用于处理数据类型的动态转换,帮助将非标准的数据类型转换为适合JSON表示的形式。 6. **commons-logging-1.2.jar**:...

    json-lib jar和所有依赖的jar

    在文件列表中的"jsonlib需要jar包",这可能是指包含了`json-lib`库及其所有依赖的JAR文件。在实际项目中,将这些JAR文件添加到项目的类路径(classpath)中,就可以使用`json-lib`提供的功能,而无需通过Maven或其他...

    json-lib-2.4和相应的依赖包

    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...

    json-lib-2.2.3-jdk15.jar 相关jar包

    1. 创建JSON对象:可以使用`net.sf.json.JSONObject`和`net.sf.json.JSONArray`类来创建和操作JSON对象。 2. 将Java对象转换为JSON:使用`JSONObject.fromObject()`或`JSONArray.fromObject()`方法将Java对象转换为...

    json-lib-2.3-jdk13.jar与相关5个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

Global site tag (gtag.js) - Google Analytics