先说明一下,这个实体中嵌套有多层内部类,json是已经拼好的。
json字符串为:
{"QueryMXASSETDTSResponse":{"rsStart":0,"rsCount":2,"rsTotal":2,"MXASSETDTSSet":{"ASSET":[{"ASSETNUM":"D-1001B","DESCRIPTION":"\u5367\u5f0f\u6c14\u6db2\u5206\u79bb\u5668","SITEID":"AMHSITE1","STATUS":"\u64cd\u4f5c","ASSETSPEC":[{"ALNVALUE":"\u91cd\u529b(\u6c14\u6db2)\u5206\u79bb\u5668","ASSETATTRID":"EQUIPN","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u8bbe\u5907\u540d\u79f0","ORGID":"AMHNG"}]},{"ASSETATTRID":"MTN","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u578b\u53f7","ORGID":"AMHNG"}]},{"ALNVALUE":"R208084","ASSETATTRID":"SN","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u7cfb\u5217\u53f7","ORGID":"AMHNG"}]},{"ALNVALUE":"\u539f\u6599\u6c14","ASSETATTRID":"MEDIUM","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u4ecb\u8d28\u7c7b\u578b","ORGID":"AMHNG"}]},{"ALNVALUE":"\u5367\u5f0f\u5706\u7b52","ASSETATTRID":"TYPE","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u578b\u5f0f","ORGID":"AMHNG"}]},{"ALNVALUE":"\u542b\u6c14\u6db2\u5206\u79bb\u5143\u4ef6\uff0c\u79ef\u6db2\u5305\uff1b\u6c14\u6db2\u5206\u79bb","ASSETATTRID":"CAP","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u7ed3\u6784\u4e0e\u7528\u9014","ORGID":"AMHNG"}]},{"ALNVALUE":"8.4","ASSETATTRID":"DPR","LINEARASSETSPECID":0,"MEASUREUNITID":"MPA","ASSETATTRIBUTE":[{"DESCRIPTION":"\u8bbe\u8ba1\u538b\u529b","ORGID":"AMHNG"}]},{"ALNVALUE":"11.33","ASSETATTRID":"TP","LINEARASSETSPECID":0,"MEASUREUNITID":"MPA","ASSETATTRIBUTE":[{"DESCRIPTION":"\u6d4b\u8bd5\u538b\u529b","ORGID":"AMHNG"}]},{"ALNVALUE":"80","ASSETATTRID":"DTE","LINEARASSETSPECID":0,"MEASUREUNITID":"\u2103","ASSETATTRIBUTE":[{"DESCRIPTION":"\u8bbe\u8ba1\u6e29\u5ea6","ORGID":"AMHNG"}]},{"ALNVALUE":"15-35","ASSETATTRID":"WT","LINEARASSETSPECID":0,"MEASUREUNITID":"\u2103","ASSETATTRIBUTE":[{"DESCRIPTION":"\u5de5\u4f5c\u6e29\u5ea6","ORGID":"AMHNG"}]},{"ALNVALUE":"8","ASSETATTRID":"WP","LINEARASSETSPECID":0,"MEASUREUNITID":"MPA","ASSETATTRIBUTE":[{"DESCRIPTION":"\u5de5\u4f5c\u538b\u529b","ORGID":"AMHNG"}]},{"ASSETATTRID":"IND","LINEARASSETSPECID":0,"MEASUREUNITID":"MM","ASSETATTRIBUTE":[{"DESCRIPTION":"\u5185\u5f84","ORGID":"AMHNG"}]},{"ASSETATTRID":"ED","LINEARASSETSPECID":0,"MEASUREUNITID":"MM","ASSETATTRIBUTE":[{"DESCRIPTION":"\u5916\u5f84","ORGID":"AMHNG"}]},{"ASSETATTRID":"WAT","LINEARASSETSPECID":0,"MEASUREUNITID":"MM","ASSETATTRIBUTE":[{"DESCRIPTION":"\u58c1\u539a","ORGID":"AMHNG"}]},{"ALNVALUE":"20R\n\u6b63\u706b","ASSETATTRID":"BM","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u4e3b\u4f53\u6750\u6599","ORGID":"AMHNG"}]},{"ALNVALUE":"4","ASSETATTRID":"RL","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u8150\u8680\u88d5\u5ea6","ORGID":"AMHNG"}]},{"ASSETATTRID":"HPT","LINEARASSETSPECID":0,"MEASUREUNITID":"MM","ASSETATTRIBUTE":[{"DESCRIPTION":"\u4fdd\u6e29\u539a\u5ea6","ORGID":"AMHNG"}]},{"ALNVALUE":"\u805a\u915a\u919b\u677f\u6750","ASSETATTRID":"HPM","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u4fdd\u6e29\u6750\u6599","ORGID":"AMHNG"}]},{"ASSETATTRID":"AM","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u9632\u8150\u63aa\u65bd","ORGID":"AMHNG"}]},{"ALNVALUE":"17.54","ASSETATTRID":"CU","LINEARASSETSPECID":0,"MEASUREUNITID":"M3","ASSETATTRIBUTE":[{"DESCRIPTION":"\u5bb9\u79ef","ORGID":"AMHNG"}]},{"ALNVALUE":"\u4e0a:\u03a61600\u00d772\u00d77044\u4e0b:800\u00d736\u00d77295","ASSETATTRID":"DIM","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u89c4\u683c\u5c3a\u5bf8","ORGID":"AMHNG"}]},{"ALNVALUE":"37200","ASSETATTRID":"WEIGHT","LINEARASSETSPECID":0,"MEASUREUNITID":"KG","ASSETATTRIBUTE":[{"DESCRIPTION":"\u91cd\u91cf","ORGID":"AMHNG"}]},{"ALNVALUE":"39783","ASSETATTRID":"MD","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u751f\u4ea7\u65e5\u671f","ORGID":"AMHNG"}]},{"ALNVALUE":"2","ASSETATTRID":"PVE","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u5bb9\u5668\u7c7b\u522b","ORGID":"AMHNG"}]},{"ALNVALUE":"\u4e2d\u56fd\u77f3\u6cb9\u96c6\u56e2\u5de5\u7a0b\u8bbe\u8ba1\u6709\u9650\u8d23\u4efb\u516c\u53f8\u897f\u5357\u5206\u516c\u53f8","ASSETATTRID":"DESIGNER","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u8bbe\u8ba1\u5355\u4f4d","ORGID":"AMHNG"}]},{"ALNVALUE":"\u56db\u5ddd\u77f3\u6cb9\u5929\u7136\u6c14\u5efa\u8bbe\u5de5\u7a0b\u6709\u9650\u8d23\u4efb\u516c\u53f8\uff08\u5bb9\u5668\u5236\u9020\u5382\uff09","ASSETATTRID":"MFRN","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u751f\u4ea7\u5382\u5546","ORGID":"AMHNG"}]},{"ASSETATTRID":"VENDORN","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u4f9b\u8d27\u5546","ORGID":"AMHNG"}]},{"ASSETATTRID":"REMARK","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u5907\u6ce8","ORGID":"AMHNG"}]}]},{"ASSETNUM":"D-1001C","DESCRIPTION":"\u5367\u5f0f\u6c14\u6db2\u5206\u79bb\u5668","SITEID":"AMHSITE1","STATUS":"\u64cd\u4f5c","ASSETSPEC":[{"ALNVALUE":"\u91cd\u529b(\u6c14\u6db2)\u5206\u79bb\u5668","ASSETATTRID":"EQUIPN","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u8bbe\u5907\u540d\u79f0","ORGID":"AMHNG"}]},{"ASSETATTRID":"MTN","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u578b\u53f7","ORGID":"AMHNG"}]},{"ALNVALUE":"R208081","ASSETATTRID":"SN","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u7cfb\u5217\u53f7","ORGID":"AMHNG"}]},{"ALNVALUE":"\u539f\u6599\u6c14","ASSETATTRID":"MEDIUM","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u4ecb\u8d28\u7c7b\u578b","ORGID":"AMHNG"}]},{"ALNVALUE":"\u5367\u5f0f\u5706\u7b52","ASSETATTRID":"TYPE","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u578b\u5f0f","ORGID":"AMHNG"}]},{"ALNVALUE":"\u542b\u6c14\u6db2\u5206\u79bb\u5143\u4ef6\uff0c\u79ef\u6db2\u5305\uff1b\u6c14\u6db2\u5206\u79bb","ASSETATTRID":"CAP","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u7ed3\u6784\u4e0e\u7528\u9014","ORGID":"AMHNG"}]},{"ALNVALUE":"8.4","ASSETATTRID":"DPR","LINEARASSETSPECID":0,"MEASUREUNITID":"MPA","ASSETATTRIBUTE":[{"DESCRIPTION":"\u8bbe\u8ba1\u538b\u529b","ORGID":"AMHNG"}]},{"ALNVALUE":"11.33","ASSETATTRID":"TP","LINEARASSETSPECID":0,"MEASUREUNITID":"MPA","ASSETATTRIBUTE":[{"DESCRIPTION":"\u6d4b\u8bd5\u538b\u529b","ORGID":"AMHNG"}]},{"ALNVALUE":"80","ASSETATTRID":"DTE","LINEARASSETSPECID":0,"MEASUREUNITID":"\u2103","ASSETATTRIBUTE":[{"DESCRIPTION":"\u8bbe\u8ba1\u6e29\u5ea6","ORGID":"AMHNG"}]},{"ALNVALUE":"15-35","ASSETATTRID":"WT","LINEARASSETSPECID":0,"MEASUREUNITID":"\u2103","ASSETATTRIBUTE":[{"DESCRIPTION":"\u5de5\u4f5c\u6e29\u5ea6","ORGID":"AMHNG"}]},{"ALNVALUE":"8","ASSETATTRID":"WP","LINEARASSETSPECID":0,"MEASUREUNITID":"MPA","ASSETATTRIBUTE":[{"DESCRIPTION":"\u5de5\u4f5c\u538b\u529b","ORGID":"AMHNG"}]},{"ASSETATTRID":"IND","LINEARASSETSPECID":0,"MEASUREUNITID":"MM","ASSETATTRIBUTE":[{"DESCRIPTION":"\u5185\u5f84","ORGID":"AMHNG"}]},{"ASSETATTRID":"ED","LINEARASSETSPECID":0,"MEASUREUNITID":"MM","ASSETATTRIBUTE":[{"DESCRIPTION":"\u5916\u5f84","ORGID":"AMHNG"}]},{"ASSETATTRID":"WAT","LINEARASSETSPECID":0,"MEASUREUNITID":"MM","ASSETATTRIBUTE":[{"DESCRIPTION":"\u58c1\u539a","ORGID":"AMHNG"}]},{"ALNVALUE":"20R\n\u6b63\u706b","ASSETATTRID":"BM","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u4e3b\u4f53\u6750\u6599","ORGID":"AMHNG"}]},{"ALNVALUE":"4","ASSETATTRID":"RL","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u8150\u8680\u88d5\u5ea6","ORGID":"AMHNG"}]},{"ASSETATTRID":"HPT","LINEARASSETSPECID":0,"MEASUREUNITID":"MM","ASSETATTRIBUTE":[{"DESCRIPTION":"\u4fdd\u6e29\u539a\u5ea6","ORGID":"AMHNG"}]},{"ALNVALUE":"\u805a\u915a\u919b\u677f\u6750","ASSETATTRID":"HPM","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u4fdd\u6e29\u6750\u6599","ORGID":"AMHNG"}]},{"ASSETATTRID":"AM","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u9632\u8150\u63aa\u65bd","ORGID":"AMHNG"}]},{"ALNVALUE":"17.54","ASSETATTRID":"CU","LINEARASSETSPECID":0,"MEASUREUNITID":"M3","ASSETATTRIBUTE":[{"DESCRIPTION":"\u5bb9\u79ef","ORGID":"AMHNG"}]},{"ALNVALUE":"\u4e0a:\u03a61600\u00d772\u00d77044\u4e0b:800\u00d736\u00d77295","ASSETATTRID":"DIM","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u89c4\u683c\u5c3a\u5bf8","ORGID":"AMHNG"}]},{"ALNVALUE":"37200","ASSETATTRID":"WEIGHT","LINEARASSETSPECID":0,"MEASUREUNITID":"KG","ASSETATTRIBUTE":[{"DESCRIPTION":"\u91cd\u91cf","ORGID":"AMHNG"}]},{"ALNVALUE":"39783","ASSETATTRID":"MD","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u751f\u4ea7\u65e5\u671f","ORGID":"AMHNG"}]},{"ALNVALUE":"2","ASSETATTRID":"PVE","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u5bb9\u5668\u7c7b\u522b","ORGID":"AMHNG"}]},{"ALNVALUE":"\u4e2d\u56fd\u77f3\u6cb9\u96c6\u56e2\u5de5\u7a0b\u8bbe\u8ba1\u6709\u9650\u8d23\u4efb\u516c\u53f8\u897f\u5357\u5206\u516c\u53f8","ASSETATTRID":"DESIGNER","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u8bbe\u8ba1\u5355\u4f4d","ORGID":"AMHNG"}]},{"ALNVALUE":"\u56db\u5ddd\u77f3\u6cb9\u5929\u7136\u6c14\u5efa\u8bbe\u5de5\u7a0b\u6709\u9650\u8d23\u4efb\u516c\u53f8\uff08\u5bb9\u5668\u5236\u9020\u5382\uff09","ASSETATTRID":"MFRN","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u751f\u4ea7\u5382\u5546","ORGID":"AMHNG"}]},{"ASSETATTRID":"VENDORN","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u4f9b\u8d27\u5546","ORGID":"AMHNG"}]},{"ASSETATTRID":"REMARK","LINEARASSETSPECID":0,"ASSETATTRIBUTE":[{"DESCRIPTION":"\u5907\u6ce8","ORGID":"AMHNG"}]}]}]}}}
将要转换为的实体:
package cn.jasgroup.amudraya.domain; import java.util.List; import net.sf.json.JSONArray; import cn.jasgroup.amudraya.base.commons.utils.JsonUtil; public class EquipRemoteData { private QueryMxassetDtsResponse querymxassetdtsresponse; public QueryMxassetDtsResponse getQuerymxassetdtsresponse() { return querymxassetdtsresponse; } public void setQuerymxassetdtsresponse( QueryMxassetDtsResponse querymxassetdtsresponse) { this.querymxassetdtsresponse = querymxassetdtsresponse; } /** **/ public static class QueryMxassetDtsResponse{ private String rsstart=""; private String rscount=""; private String rstotal=""; private Mxassetdtsset mxassetdtsset; public String getRsstart() { return rsstart; } public void setRsstart(String rsstart) { this.rsstart = rsstart.toUpperCase(); } public String getRscount() { return rscount; } public void setRscount(String rscount) { this.rscount = rscount.toUpperCase(); } public String getRstotal() { return rstotal; } public void setRstotal(String rstotal) { this.rstotal = rstotal.toUpperCase(); } public Mxassetdtsset getMxassetdtsset() { return mxassetdtsset; } public void setMxassetdtsset(Mxassetdtsset mxassetdtsset) { this.mxassetdtsset = mxassetdtsset; } /** **/ public static class Mxassetdtsset{ private List<Asset> asset; public Mxassetdtsset() { super(); } public List<Asset> getAsset() { return asset; } @SuppressWarnings("unchecked") public void setAsset(List<Asset> asset) { System.out.println(JSONArray.fromObject(asset).toString()); this.asset=JsonUtil.getDTOList(JSONArray.fromObject(asset).toString(),Asset.class); } /** **/ public static class Asset{ private String assetnum=""; private String location=""; private String description=""; private String siteid=""; private String status=""; private List<Assetspec> assetspec; public String getAssetnum() { return assetnum; } public void setAssetnum(String assetnum) { this.assetnum = assetnum.toUpperCase(); } public String getDescription() { return description.toUpperCase(); } public void setDescription(String description) { this.description = description.toUpperCase(); } public String getSiteid() { return siteid; } public void setSiteid(String siteid) { this.siteid = siteid.toUpperCase(); } public String getStatus() { return status; } public void setStatus(String status) { this.status = status.toUpperCase(); } public List<Assetspec> getAssetspec() { return assetspec; } @SuppressWarnings("unchecked") public void setAssetspec(List<Assetspec> assetspec) { this.assetspec=JsonUtil.getDTOList(JSONArray.fromObject(assetspec).toString(),Assetspec.class); } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } /** **/ public static class Assetspec{ private String alnvalue=""; private String assetattrid=""; private String linearassetspecid=""; private String measureunitid; private List<Assetattribute> assetattribute; public String getMeasureunitid() { return measureunitid; } public void setMeasureunitid(String measureunitid) { this.measureunitid = measureunitid; } public String getAlnvalue() { return alnvalue; } public void setAlnvalue(String alnvalue) { this.alnvalue = alnvalue.toUpperCase(); } public String getAssetattrid() { return assetattrid; } public void setAssetattrid(String assetattrid) { this.assetattrid = assetattrid.toUpperCase(); } public String getLinearassetspecid() { return linearassetspecid; } public void setLinearassetspecid(String linearassetspecid) { this.linearassetspecid = linearassetspecid.toUpperCase(); } public List<Assetattribute> getAssetattribute() { return assetattribute; } public void setAssetattribute(List<Assetattribute> assetattribute) { this.assetattribute=JsonUtil.getDTOList(JSONArray.fromObject(assetattribute).toString(),Assetattribute.class); } /** **/ public static class Assetattribute{ private String description=""; private String orgid=""; public String getDescription() { return description; } public void setDescription(String description) { this.description = description.toUpperCase(); } public String getOrgid() { return orgid; } public void setOrgid(String orgid) { this.orgid = orgid.toUpperCase(); } } } } } } }
Json转实体的常用方法(工具类JsonUtil):
import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import net.sf.ezmorph.object.DateMorpher; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.util.JSONUtils; public class JsonUtil { /**页面传至后台时,json数据在request的参数名称*/ public final static String JSON_ATTRIBUTE = "json"; public final static String JSON_ATTRIBUTE1 = "json1"; public final static String JSON_ATTRIBUTE2 = "json2"; public final static String JSON_ATTRIBUTE3 = "json3"; public final static String JSON_ATTRIBUTE4 = "json4"; /** * 从一个JSON 对象字符格式中得到一个java对象,形如: * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}} * @param object * @param clazz * @return */ public static Object getDTO(String jsonString, Class clazz){ //这里仅用到了这一个方法 JSONObject jsonObject = null; try{ setDataFormat2JAVA(); jsonObject = JSONObject.fromObject(jsonString); }catch(Exception e){ e.printStackTrace(); } return JSONObject.toBean(jsonObject, clazz); } /** * 从一个JSON 对象字符格式中得到一个java对象,其中beansList是一类的集合,形如: * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}, * beansList:[{}, {}, ...]} * @param jsonString * @param clazz * @param map 集合属性的类型 (key : 集合属性名, value : 集合属性类型class) eg: ("beansList" : Bean.class) * @return */ public static Object getDTO(String jsonString, Class clazz, Map map){
JSONObject jsonObject = null; try{ setDataFormat2JAVA(); jsonObject = JSONObject.fromObject(jsonString); }catch(Exception e){ e.printStackTrace(); } return JSONObject.toBean(jsonObject, clazz, map); } /** * 从一个JSON数组得到一个java对象数组,形如: * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...] * @param object * @param clazz * @return */ public static Object[] getDTOArray(String jsonString, Class clazz){ setDataFormat2JAVA(); JSONArray array = JSONArray.fromObject(jsonString); Object[] obj = new Object[array.size()]; for(int i = 0; i < array.size(); i++){ JSONObject jsonObject = array.getJSONObject(i); obj[i] = JSONObject.toBean(jsonObject, clazz); } return obj; } /** * 从一个JSON数组得到一个java对象数组,形如: * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...] * @param object * @param clazz * @param map * @return */ public static Object[] getDTOArray(String jsonString, Class clazz, Map map){ setDataFormat2JAVA(); JSONArray array = JSONArray.fromObject(jsonString); Object[] obj = new Object[array.size()]; for(int i = 0; i < array.size(); i++){ JSONObject jsonObject = array.getJSONObject(i); obj[i] = JSONObject.toBean(jsonObject, clazz, map); } return obj; } /** * 从一个JSON数组得到一个java对象集合 * @param object * @param clazz * @return */ public static List getDTOList(String jsonString, Class clazz){ setDataFormat2JAVA(); JSONArray array = JSONArray.fromObject(jsonString); List list = new ArrayList(); for(Iterator iter = array.iterator(); iter.hasNext();){ JSONObject jsonObject = (JSONObject)iter.next(); list.add(JSONObject.toBean(jsonObject, clazz)); } return list; } /** * 从一个JSON数组得到一个java对象集合,其中对象中包含有集合属性 * @param object * @param clazz * @param map 集合属性的类型 * @return */ public static List getDTOList(String jsonString, Class clazz, Map map){ setDataFormat2JAVA(); JSONArray array = JSONArray.fromObject(jsonString); List list = new ArrayList(); for(Iterator iter = array.iterator(); iter.hasNext();){ JSONObject jsonObject = (JSONObject)iter.next(); list.add(JSONObject.toBean(jsonObject, clazz, map)); } return list; } /** * 从json HASH表达式中获取一个map,该map支持嵌套功能 * 形如:{"id" : "johncon", "name" : "小强"} * 注意commons-collections版本,必须包含org.apache.commons.collections.map.MultiKeyMap * @param object * @return */ public static Map getMapFromJson(String jsonString) { setDataFormat2JAVA(); JSONObject jsonObject = JSONObject.fromObject(jsonString); Map map = new HashMap(); for(Iterator iter = jsonObject.keys(); iter.hasNext();){ String key = (String)iter.next(); map.put(key, jsonObject.get(key)); } return map; } /** * 从json数组中得到相应java数组 * json形如:["123", "456"] * @param jsonString * @return */ public static Object[] getObjectArrayFromJson(String jsonString) { JSONArray jsonArray = JSONArray.fromObject(jsonString); return jsonArray.toArray(); } /** * 把数据对象转换成json字符串 * DTO对象形如:{"id" : idValue, "name" : nameValue, ...} * 数组对象形如:[{}, {}, {}, ...] * map对象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...} * @param object * @return */ /*public static String getJSONString(Object object) throws Exception{ String jsonString = null; //日期值处理器 JsonConfig jsonConfig = new JsonConfig(); jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor()); if(object != null){ if(object instanceof Collection || object instanceof Object[]){ jsonString = JSONArray.fromObject(object, jsonConfig).toString(); }else{ jsonString = JSONObject.fromObject(object, jsonConfig).toString(); } } return jsonString == null ? "{}" : jsonString; } */ private static void setDataFormat2JAVA(){ //设定日期转换格式 JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"})); } public static void main(String[] arg) throws Exception{ String s = "{status : 'success'}"; // System.out.println(" object : " + JsonUtil.getJSONString(s)); String mode1S="{id:'ada',name:'asdfa',addr:'asdfadfadsfadsf'}"; // Model1 model1=(Model1)JsonUtil.getDTO(mode1S, Model1.class); // System.out.println(model1.toString()); // // String model2S="{id:'ada',name:'asdfa',addr:'asdfadfadsfadsf',model3:{id:'12',name:'name',addr:'addr'}}"; // Model2 model2=(Model2)JsonUtil.getDTO(model2S, Model2.class); // System.out.println(model2.toString()); } }
在测试类中,应该这样写:
String equipJson = //Json字符串;
equipJson=equipJson.toLowerCase();
EquipRemoteData equipRemoteData=(EquipRemoteData) JsonUtil.getDTO(equipJson,new EquipRemoteData().getClass());
List<Asset> lsAsset=equipRemoteData.getQuerymxassetdtsresponse().getMxassetdtsset().getAsset();
到这里就算转换结束了。
这里的所有代码都非我所写,是摘录别人的。