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類型,之後你再調用的時候就會出問題了


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