`

JSON字符串转javabean,MorphDynaBean cannot be cast to ……

 
阅读更多

  在json字符串转java bean时,一般的对象,可以直接转,如:一个学生类,属性有姓名、年龄等

 

public class Student implements java.io.Serializable{

	/** 
	* @Fields serialVersionUID : TODO
	*/ 
	private static final long serialVersionUID = -1943961352036134112L;
	private String sname;
	private Integer age;
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	
}

 

  由字符串转java bean时可以使用以下方法:

 

JSONObject jobj = JSONObject.fromObject(str);
Student s = (Student) JSONObject.tobean(jobj,Student.class);

    是没有问题的,但是如果属性中含有复杂的类型,当其中属性有类似List , Map ,ArrayList、自定义的类型,如List<Teacher> teachers, 就不可以了。 会报错:MorphDynaBean cannot be cast to con.test……

    在JSONObject.toBean的时候如果转换的类中有集合,可以先定义Map<String, Class> classMap = new HashMap<String, Class>();在classMap中put你要转换的类中的集合名,像:classMap.put("teachers", Teacher.class);然后在toBean()的时候把参数加上, 像:Student student=(Student) JSONObject.toBean(str, Student.class, classMap);

 

比如我定义了如下类型:

 

import java.util.List;
/**
 * 
* <P>Tiltle: AnalysisModel.java </P>
* <P>Description:模型类  </P>
* @author biyutong
* @date Jun 11, 2012 9:37:54 AM 
* @version:V1.0
 */
public class AnalysisModel implements java.io.Serializable{

	/**
	 * 固定条件
	 */
	private List<Condition> regularCondtionList;//
	/**
	 * 动态条件
	 */
	private List<ConditionField> dynamicConFieldList;
	/**
	 * 结果
	 */
	private List<ResultField> resultField;
	/**
	 * 获取前多少条数据
	 */
	private Integer topnum;
	/**
	 * 顺序还是随机
	 */
	private String sortFlag;
	/**
	 * 备注
	 */
	private String remark;
	/**
	 * 模型名称
	 */
	private String modelName;
	/**
	 * 对应的xml文件名称
	 */
	private String fileName;
	public List<Condition> getRegularCondtionList() {
		return regularCondtionList;
	}
	public void setRegularCondtionList(List<Condition> regularCondtionList) {
		this.regularCondtionList = regularCondtionList;
	}
	public List<ConditionField> getDynamicConFieldList() {
		return dynamicConFieldList;
	}
	public void setDynamicConFieldList(List<ConditionField> dynamicConFieldList) {
		this.dynamicConFieldList = dynamicConFieldList;
	}
	public Integer getTopnum() {
		return topnum;
	}
	public void setTopnum(Integer topnum) {
		this.topnum = topnum;
	}
	public String getSortFlag() {
		return sortFlag;
	}
	public void setSortFlag(String sortFlag) {
		this.sortFlag = sortFlag;
	}
	public String getRemark() {
		return remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}

	
	public String getModelName() {
		return modelName;
	}
	public void setModelName(String modelName) {
		this.modelName = modelName;
	}
	public List<ResultField> getResultField() {
		return resultField;
	}
	public void setResultField(List<ResultField> resultField) {
		this.resultField = resultField;
	}
	public String getFileName() {
		return fileName;
	}
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
	
}

 在转化的时候需要这样来写:

 

Map<String, Class> classMap = new HashMap<String, Class>();

classMap.put("regularCondtionList", Condition.class);

classMap.put("dynamicConFieldList", ConditionField.class);

classMap.put("resultField", ResultField.class);

AnalysisModel analysisModel=(AnalysisModel) JSONObject.toBean(str, AnalysisModel.class, classMap);
 

 

4
0
分享到:
评论
5 楼 yakcy_33 2015-05-07  
非常感谢
4 楼 yobyppah 2014-12-01  
非常感谢。
3 楼 yupengcc 2014-09-24  
非常感谢!
2 楼 sd543521 2013-02-03  
0dragon 写道
Thanks!

1 楼 0dragon 2013-01-22  
Thanks!

相关推荐

    忽略字段的首字母大小写,将json字符串转成javabean

    忽略字段的首字母大小写,将json字符串转成javabean,忽略字段的首字母大小写,将json字符串转成List

    忽略字段的首字母大小写,将json字符串转成javabean对象

    忽略字段的首字母大小写,将json字符串转成javabean对象,解决Java对象中属性中首字母大写而取不到值(取到的值为空)的问题 忽略字段的首字母大小写,将json字符串转成List,解决Java对象中属性中首字母大写而取不...

    json_lib使用实例:java对象与json字符串的互转

    使用`json-lib`,我们可以将JSON字符串解析为JavaBean、HashMap、ArrayList等。例如,假设我们有一个JSON字符串`{"name":"John", "age":30}`,可以这样转换: ```java String jsonString = "{\"name\":\"John\",...

    复杂的json字符串解析(真实案例)

    在实际项目中,我们经常需要解析JSON字符串以获取其中的数据,这通常涉及到各种JSON解析库。在这个真实案例中,我们将深入探讨如何使用Gson库来解析复杂的JSON字符串。 Gson是Google提供的一个Java库,它能够将Java...

    Java Web程序实现返回JSON字符串的方法总结

    需要注意的是,在使用 JSONArray 对象时,我们需要将 JavaBean 对象转换为 Map 对象,否则无法正确地将其转换为 JSON 字符串。 为了解决 Java 对象属性为空时返回空字符串的问题,我们可以使用 JSONObject 对象的 ...

    Json一键转Javabean工具

    "Json一键转Javabean工具"是一个实用的开发辅助工具,它能够帮助Java开发者快速地将JSON格式的数据转换成对应的JavaBean对象,极大地提高了开发效率。 JSON转换为JavaBean的过程通常包括以下步骤: 1. **解析JSON...

    首字母大写的json串转为javabean实例

    在Java编程中,将JSON字符串转换为JavaBean实例是一个常见的任务,特别是在处理Web服务或API交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,而JavaBean是Java中的一种对象模型,用于封装...

    JavaBean与Json相互转换

    1. 将JavaBean转换为Json字符串: 首先需要引入Jackson库,然后使用`ObjectMapper`类的`writeValueAsString()`方法: ```java ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper....

    提供将对象转换成JSON字符串的方法 (2).pdf

    2. `toJSON(Object[] objs)`:此方法接收一个对象数组,然后遍历数组中的每个元素,调用`toJSON(Object obj)`方法将其转换为JSON字符串,并将结果存入一个String数组。最后,调用`toJSONArray(String[] strs)`方法将...

    java解析json格式字符串所需jar包

    为了在Java中解析JSON格式的字符串,我们需要依赖一些库,这些库提供了方便的方法来操作JSON对象。标题提到的是“java解析json格式字符串所需jar包”,描述指出我们可以自行下载这些库。在提供的压缩包文件中,包含...

    JAVA-JSON工具转换类

    可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`(将JSON字符串解析为Java对象)、`convertToMap()`(将JSON字符串转换为Map)以及`convertToList()`(将JSON字符串转换为List)等。...

    json转javabean工具

    提供json转javabean和javabean转json的方法

    json转Map,转javaBean,javBean和Map转json

    同样,我们也可以将JSON字符串转换为JavaBean对象。首先,你需要定义一个与JSON结构对应的JavaBean类,然后使用Jackson的`ObjectMapper`进行转换: ```java public class User { private String name; private...

    各种对象转成JSON字符串 (2).docx

    在IT领域,特别是在Web开发中,JSON是传输数据的主要方式之一,因为它能够有效地将复杂的数据结构转化为字符串,便于在网络间传递。 在Java中,将各种对象转换为JSON字符串通常需要借助于一些库,如`org.json`或`...

    json一键转javabean工具

    1. **自动解析JSON**: 工具能够解析JSON字符串或JSON文件,提取其中的键值对,然后根据这些键生成JavaBean的属性。 2. **自动生成getter/setter方法**: 生成的JavaBean不仅包含属性,还会有对应的getter和setter...

    javabean和json转换_javabean2json_

    Gson的`toJson()`方法将JavaBean对象转换为JSON字符串。在这个例子中,我们创建了一个User对象,并用Gson将其转换成JSON字符串。 另一方面,从JSON转换回JavaBean同样简单。假设我们有一个JSON字符串,想要反向转换...

    ajax json java 用法 json 将List、Object转换为Json格式字符串

    - 该方法主要用于将 JavaBean 转换成 JSON 字符串。 - 首先初始化一个 `StringBuilder` 对象 `json` 并添加 `{`。 - 使用 `Introspector.getBeanInfo()` 获取传入对象的所有属性。 - 遍历所有属性,获取属性名和...

    Javabean转换成json字符并首字母大写代码实例

    在Java开发中,有时我们需要将Java对象(Javabean)转换为JSON格式的字符串,以便于在网络间传输数据或与前端交互。本篇将详细讲解如何实现这一过程,并特别关注如何使转换后的JSON字符串首字母大写。 首先,我们...

    各种对象转成JSON字符串.docx

    本文将介绍如何将各种类型的Java对象转换为JSON字符串,以供网络通信或存储。以下是对给定代码的详细解释: 首先,为了实现对象到JSON的转换,我们需要引入一些依赖库。在提供的描述中提到了以下jar包: 1. `...

    FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换操作

    FastJson支持JSON格式字符串、JSON对象(JSONObject)以及JavaBean之间的相互转换,使得数据处理变得简单。以下将详细解释这些转换操作。 1. JSON格式字符串到JSON对象的转换: 使用`JSON.parseObject()`方法可以...

Global site tag (gtag.js) - Google Analytics