`

JSONObject转换成对应的需要的对象

阅读更多

在使用JSONObject.toBean的时候,得到的Bean里面的复杂数据类型( 如果转换的类中有集合)不能转换成需要的对象类型。

 java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to ......

package com.edu.xukai;

/**
 * @author xukai
 *
 */
public class Student {

	private String stuNo;

	private String stuName;

	public Student() {
	}

	public Student(String stuNo, String stuName) {
		this.stuNo = stuNo;
		this.stuName = stuName;
	}

	// getter setter

	@Override
	public String toString() {
		return "Student [stuNo=" + stuNo + ", stuName=" + stuName + "]";
	}

}

 

 

package com.edu.xukai;

import java.util.List;

/**
 * @author xukai
 *
 */
public class Teacher {

	private String teaId;

	private String teaName;

	private List<Student> stus;

	public Teacher() {
	}

	public Teacher(String teaId, String teaName, List<Student> stus) {
		this.teaId = teaId;
		this.teaName = teaName;
		this.stus = stus;
	}
//getter setter
}
package com.edu.xukai;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;

/**
 * @author xukai
 *
 */
public class TestJSONObject {
	
	public static void main(String[] args) {
		Student student_1 = new Student("学号1", "学生1");
		List<Student> stus = new ArrayList<Student>();
		stus.add(student_1);
		Teacher teacher_1 = new Teacher("编号1", "教师1", stus);
		JSONObject obj = JSONObject.fromObject(teacher_1);
		System.out.println("JSON格式的Teacher->" + obj.toString());
		Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class);
		try {
			Student studentBean = teacherBean.getStus().get(0);
			System.out.println(studentBean);
		} catch (Exception e) {
			System.out.println("出现异常");
			e.printStackTrace();
		}
	}
}

 运行可以看到控制台打印结果:

 

JSON格式的Teacher->{"stus":[{"stuName":"学生1","stuNo":"学号1"}],"teaId":"编号1","teaName":"教师1"}
出现异常
java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.edu.xukai.Student
at com.edu.xukai.TestJSONObject.main(TestJSONObject.java:25)

解决办法:使用JSONObject.toBean(jsonObject, beanClass, classMap)

package com.edu.xukai;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
/**
 * @author xukai
 *
 */
public class TestJSONObject {	
	public static void main(String[] args) {
		Student student_1 = new Student("学号1", "学生1");
		List<Student> stus = new ArrayList<Student>();
		stus.add(student_1);
		Teacher teacher_1 = new Teacher("编号1", "教师1", stus);
		JSONObject obj = JSONObject.fromObject(teacher_1);
		System.out.println("JSON格式的Teacher->" + obj.toString());
		
		// 定义一个Map
		Map<String, Class<Student>> map = new HashMap<String, Class<Student>>();
		map.put("stus", Student.class); // key为teacher私有变量的属性名
		// 使用JSONObject.toBean(jsonObject, beanClass, classMap)
		Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class, map);
		try {
			Student studentBean = teacherBean.getStus().get(0);
			System.out.println(studentBean);
		} catch (Exception e) {
			System.out.println("出现异常");
			e.printStackTrace();
		}
	}	
}

   控制台打印结果:

JSON格式的Teacher->{"stus":[{"stuName":"学生1","stuNo":"学号1"}],"teaId":"编号1","teaName":"教师1"}
Student [stuNo=学号1, stuName=学生1]

 

 

 

分享到:
评论

相关推荐

    用于java对象与json对象间的相互转换(net.sf.json.JSONObject)

    `fromObject`方法将Java对象转换为`JSONObject`,然后调用`toString()`将其转化为JSON字符串。 ### 进阶使用 - **处理嵌套结构**:`JSONObject`也支持嵌套结构,即JSON对象内包含其他JSON对象或数组。可以通过递归...

    JSONObject对象依赖的jar包

    使用`JSONObject`,你可以轻松地将Java对象转换为JSON格式,或者将接收到的JSON字符串解析为Java对象。例如,你可以创建一个新的`JSONObject`,添加键值对,然后将其转换为字符串: ```java import org.json....

    net.sf.json.JSONObject实现Object对象与Json字符串的互转

    要将这个`User`对象转换成`JSONObject`,我们可以使用`JSONObject.fromObject()`方法: ```java User user = new User(); user.setName("John"); user.setAge(30); JSONObject jsonObject = JSONObject.fromObject...

    java的JsonObject对象提取值方法

    这里,`JSON.parseObject()` 方法用于将JSON字符串转换为`JsonObject`,`getJSONArray()` 用于获取指定键对应的`JsonArray`,而 `getString()` 则用于从`JsonObject`中提取字符串值。 接下来是第二种格式的JSON数据...

    JSONObject java解析json需要的jar包和依赖包

    `JSONObject`类提供了一个构造函数,可以将JSON格式的字符串转换为`JSONObject`对象。例如: ```java import org.json.JSONObject; public class JsonExample { public static void main(String[] args) { ...

    JsonObject C#轻量级Json对象转换类

    简单的Json转化类,Json格式与Json对象之间互相转换。 示例:(文件内附示例) string s = "{\r\n" + "\"name\":\"Bill Gates\",\r\n"+ "\"street\":\"Fifth Avenue New York 666\",\r\n"+ "\"age\":56,\r\n"+ ...

    JSONObject对象相关的jar包依赖(6个)

    在标题和描述中提到的“JSONObject对象相关的jar包依赖”,实际上是指要使用 `JSONObject` 类,你需要在你的项目中引入相应的 jar 包依赖。在传统的 Java 开发中,这通常意味着下载特定版本的 `json.jar` 文件,并将...

    Java中Json字符串直接转换为对象的方法(包括多层List集合)

    // 将JSONObject转换为WeatherBean_Baidu实例 WeatherBean_Baidu weather = (WeatherBean_Baidu) JSONObject.toBean(jsonObj, WeatherBean_Baidu.class, classMap); // 打印结果 System.out.println(weather.get...

    多层集合嵌套的JSON数据转化为Java对象(src.zip)

    3. **将JSONObject转换为Java对象** 当JSON数据包含嵌套的对象时,我们需要创建对应的Java类来存储数据。例如,对于上面的JSON,我们可以创建两个类:`MainObject`和`SubObject`。 ```java public class Main...

    jsonobject

    要使用`JSONObject`,首先需要在项目中引入对应的jar包。根据描述,这里提供了必要的6个包,这些包可能包括了`org.json`库的核心类、解析器以及可能的依赖。确保项目构建路径中包含这些jar包后,就可以在代码中导入...

    jsonobject.zip

    还可以通过get方法获取键对应的值,通过put方法修改或添加键值对,通过toString方法将JSONObject转换为字符串,等等。JSONObject还支持嵌套的对象和数组操作,使你能处理复杂的JSON结构。 总之,"jsonobject.zip...

    org.json.JSONObject引用依赖包

    - `toMap()` 将JSONObject转换为Map对象。 7. **验证对象**: - `has(String key)` 检查JSON对象是否包含指定的键。 - `isNull(String key)` 检查指定键对应的值是否为null。 在实际开发中,`org.json`库还提供...

    JSONObject相关依赖架包

    为了在项目中使用这些库,你需要将它们添加到项目的类路径中,或者在Maven或Gradle的配置文件中指定对应的依赖。这样,你就可以在代码中调用如`JSONArray.parseArray(String json)`、`JSONObject.fromObject(Object ...

    JSONObject及依赖的jar包

    - 使用`put()`方法:`put(String key, Object value)`方法用于添加键值对,其中`key`是字符串,`value`可以是任何Java对象(但最终会转换成JSON兼容的类型)。 3. 访问键值对 - 使用`get()`方法:`get(String key...

    使用JSONObject需要用到的jar包

    最后,我们通过调用`toString()`方法将JSONObject转换为字符串并打印出来。 JSONObject提供了丰富的API,包括但不限于: 1. `put(String key, value)`:添加键值对到JSONObject。 2. `get(String key)`:获取指定...

    JSON字符串转换JSONObject和JSONArray的方法

    一.下载json 具体到http://www.json.org/上找Java-json下载,并把其放到项目源...//将字符串转换成jsonObject对象 JSONObject myJsonObject = new JSONObject(jsonMessage); //获取对应的值 value1 = myJsonObject.g

    JSONObject所需要的6jar包

    2. 解析JSON字符串:使用`JSONObject`的构造函数接收JSON格式的字符串,将其转化为对象。 3. 获取值:使用get方法获取指定键对应的值,可以是字符串、数字、布尔值等。 4. 遍历JSON:使用keys方法获取所有键,然后...

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

    `net.sf.json.JSONObject` 是json-lib中的核心类,它允许你将Java对象转换为JSON表示,并反之将JSON字符串解析为Java对象。这极大地简化了数据的序列化和反序列化过程。例如,你可以将一个HashMap转换为JSON对象,...

    JsonObject(免分)

    例如,使用`toMap()`方法将JsonObject转换为Map,使用`putAll(Map)`将Map转换为JsonObject。 8. **处理嵌套JsonObject和JsonArray**:JsonObject可以包含其他JsonObject和JsonArray,可以通过`getJSONObject(String...

    JAVA JSONObject Jar包

    要将JSONObject转换回JSON格式的字符串,可以使用toString()方法: ```java String jsonString = jsonObject.toString(); ``` 6. **与其他数据类型转换** JSONObject还提供了方便的方法将JSON对象转换为其他...

Global site tag (gtag.js) - Google Analytics