首先,先看一下我們要轉換的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類型,之後你再調用的時候就會出問題了