[
{
"user_id": 5300,
"flag": 0,
"configs": [
{
"user_id": 5300,
"config_item_id": 1015,
"type": 0
},
{
"user_id": 5300,
"config_item_id": 1016,
"type": 0
}
]
}
]
需要解析的json数据如上
百度搜到的解决方案:
http://bglmmz.iteye.com/blog/2154582
稍微修改了一下:
private static List<HashMap<String, Object>> fromJson2Map(String jsonString) {
List<HashMap<String, Object>> listMap = new ArrayList<>();
JSONArray jsonArrays = JSONArray.parseArray(jsonString);
System.out.println("size = " + jsonArrays.size());
for (int i = 0; i < jsonArrays.size(); i++) {
HashMap jsonMap = JSON.parseObject(jsonArrays.get(i).toString(), HashMap.class);
HashMap<String, Object> resultMap = new HashMap<String, Object>();
for (Iterator iter = jsonMap.keySet().iterator(); iter.hasNext(); ) {
String key = (String) iter.next();
System.out.println("key = " + key);
if (jsonMap.get(key) instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) jsonMap.get(key);
List list = handleJSONArray(jsonArray);
resultMap.put(key, list);
} else {
resultMap.put(key, jsonMap.get(key));
}
}
listMap.add(resultMap);
}
return listMap;
}
private static List<HashMap<String, Object>> handleJSONArray(JSONArray jsonArray) {
List list = new ArrayList();
for (Object object : jsonArray) {
JSONObject jsonObject = (JSONObject) object;
HashMap map = new HashMap<String, Object>();
for (Map.Entry entry : jsonObject.entrySet()) {
if (entry.getValue() instanceof JSONArray) {
map.put((String) entry.getKey(), handleJSONArray((JSONArray) entry.getValue()));
} else {
map.put((String) entry.getKey(), entry.getValue());
}
}
list.add(map);
}
return list;
}
调用:
List<HashMap<String, Object>> jsonMap = fromJson2Map(response.asString());
System.out.println("jsonMap size " + jsonMap.size());
for (HashMap<String, Object> aJsonMap : jsonMap) {
List<HashMap> configDataList = (List<HashMap>) aJsonMap.get("fields");
System.out.println("configDataList size = " + configDataList.size());
for (HashMap configData : configDataList) {
String type = (String) configData.get("type");
if (type.equals("select")) {
System.out.println("area_code: " + list.get(i).get("area_code") + " city_name: " + list.get(i).get("city_name"));
System.out.println(configData);
}
}
}
看来也就只会抄抄改改,也看不懂什么意思。。诶