net.sf.ezmorph.bean.MorphDynaBean cannotbe cast to xxx 关于JSON对象解析List在调用时出错问题

首先,先看一下我们要转换的JSON对象:

ResultModel对象内有一个Word的List集合

package testOCR.model;

import java.util.ArrayList;
import java.util.List;

public class ResultModel {
	private String log_id;//登录id
	private String words_result_num;//识别结果数,表示words_result的元素个数 应该是行数
	private List<Word> words_result=new ArrayList<Word>();//结果列表
	public String getLog_id() {
		return log_id;
	}
	public void setLog_id(String log_id) {
		this.log_id = log_id;
	}
	public String getWords_result_num() {
		return words_result_num;
	}
	public void setWords_result_num(String words_result_num) {
		this.words_result_num = words_result_num;
	}
	public List<Word> getWords_result() {
		return words_result;
	}
	public void setWords_result(List<Word> words_result) {
		this.words_result = words_result;
	}
	@Override
	public String toString() {
		return "ResultModel [log_id=" + log_id + ", words_result_num="
				+ words_result_num + ", words_result=" + words_result + "]";
	}
	
}

Word实体类

package testOCR.model;

public class Word {
	String words;

	public String getWords() {
		return words;
	}

	public void setWords(String words) {
		this.words = words;
	}

	@Override
	public String toString() {
		return "Word [words=" + words + "]";
	}
	
	
}


之后我们把一个String类型的JSON字符串转换成ResultModel对象

 	 Map classMap = new HashMap();         
	 classMap.put("words_result",Word.class);
         JSONObject jsonobject = JSONObject.fromObject(jsonResult);
         ResultModel model=(ResultModel)JSONObject.toBean(jsonobject,ResultModel.class,classMap);

这里我已经解决了问题,普通的解析是这样的:

         JSONObject jsonobject = JSONObject.fromObject(jsonResult);
         ResultModel model=(ResultModel)JSONObject.toBean(jsonobject,ResultModel.class);

问题就出来了最后一个map,这个MAP说明了List中的格式,否则JSONObject.toBean就会把内部对象解析成net.sf.ezmorph.bean.MorphDynaBean类型,之后你再调用的时候就会出问题了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章