背景:
服务器端返回json字符串,为了便于操作将json字符串转换为自定义的java对象
说明:
转换的主要函数说明
JSONObject.toBean(Object, Bean.class, Map);
参数说明:
Object: 你得到的JSONObject 对象
Bean.class: 要转换成的Bean的类型
Map: Bean的成员类型
需要引用的jar包
commons-beanutils.jar
commons-collections.jar
commons-lang-2.5.jar
commons-logging.jar
ezmorph-1.0.6.jar
json-lib-2.3-jdk15.jar
操作:
//要转换成为的对象
public class TrafficResInfo {
private int resultCode;
private String resultMsg;
private String record_count;
private List<TrafficOrderInfo> records;public int getResultCode() {
return resultCode;
}public void setResultCode(int resultCode) {
this.resultCode = resultCode;
}public String getResultMsg() {
return resultMsg;
}public void setResultMsg(String resultMsg) {
this.resultMsg = resultMsg;
}public String getRecord_count() {
return record_count;
}public void setRecord_count(String record_count) {
this.record_count = record_count;
}public List<TrafficOrderInfo> getRecords() {
return records;
}public void setRecords(List<TrafficOrderInfo> records) {
this.records = records;
}}
//客户端返回字符串
String ret = "{\"record_count\":2,\"records\":[{\"cxbd_id\":5084185,\"record_id\":1},{\"cxbd_id\":5084186,\"record_id\":2}],\"resultCode\":\"200\",\"resultMsg\":\"操作成功。\"}";
//将字符串转换为JSON对象
JSONObject object = JSONObject.fromObject(ret);//指定要转成为的对象的成员属性的数据类型
Map<String, Class<?>> cmap = new HashMap<String, Class<?>>();/**指定records属性的类型为TrafficOrderInfo,如果不指定,records中的泛型类型则为net.sf.ezmorph.bean.MorphDynaBean,转换后则为*ArrayList<MorphDynaBean>,如想获取car_num需要Object obj=morphDynaBean.get("car_num");不便于操作。指定为TrafficOrderInfo后,转换后则为*ArrayList<TrafficOrderInfo>。*/
cmap.put("records", TrafficOrderInfo.class);//如下可以不用指定
// cmap.put("car_num",String.class);
// cmap.put("models",String.class);
// cmap.put("cxbd_id",String.class);
// cmap.put("record_id",String.class);
TrafficResInfo trafficResInfo = (TrafficResInfo) JSONObject.toBean(object, TrafficResInfo.class,cmap);