提供源码。可解析Jason报文中有字段中内容为单组和多组共同存在的情况。
public static Map getMapFromJsObject(String pString)
throws Exception
{
Map<String, Object> reMap = new HashMap<String, Object>();
JSONObject jObject;
Iterator<?> i;
List<Map> reList = new ArrayList<Map>();
if (StringUtils.isNotBlank(pString)) {
if (!JSONUtils.mayBeJSON(pString)) {
String msg = AppframeLocaleFactory
.getResource("com.ai.appframe2.web.json.format_error");
throw new Exception(msg);
}
jObject = JSONObject.fromString(pString);
if ((!jObject.isNullObject()) && (!jObject.isEmpty())) {
for (i = jObject.keys(); i.hasNext();) {
String key = (String) i.next();
if (JSONUtils.isArray(jObject.get(key))) {
JSONArray jArray = (JSONArray) jObject.get(key);
for (int j = 0; j < jArray.length(); j++) {
if (JSONUtils.isObject(jArray.get(j))) {
reList.add(getMapFromJsObject(((JSONObject) jArray.get(j)).toString()));
} else {
reList.add((Map) jArray.get(j));
}
}
reMap.put(key, reList);
} else if (JSONUtils.isObject(jObject.get(key))) {
reMap.put(key, getMapFromJsObject(((JSONObject) jObject
.get(key)).toString()));
} else {
reMap.put(key, jObject.get(key));
}
}
}
}
return reMap;
}