首先,先看一下我们要转换的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类型,之后你再调用的时候就会出问题了