package cn.alphabets.light.network; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import cn.alphabets.light.log.Logger; /** * JSONObject转换成Hash, 从Stackoverflow拷贝 * Created by lin on 14/12/3. */ public class ParameterMapParser { public static Map jsonToMap(JSONObject json) { Map<String, Object> retMap = new HashMap<String, Object>(); if(json != JSONObject.NULL) { try { retMap = toMap(json); } catch (JSONException e) { Logger.e(e); throw new RuntimeException("Converting object failed."); } } return retMap; } private static Map toMap(JSONObject object) throws JSONException { Map<String, Object> map = new HashMap<String, Object>(); Iterator<String> keysItr = object.keys(); while(keysItr.hasNext()) { String key = keysItr.next(); Object value = object.get(key); if(value instanceof JSONArray) { value = toList((JSONArray) value); } else if(value instanceof JSONObject) { value = toMap((JSONObject) value); } map.put(key, value); } return map; } private static List toList(JSONArray array) throws JSONException { List<Object> list = new ArrayList<Object>(); for(int i = 0; i < array.length(); i++) { Object value = array.get(i); if(value instanceof JSONArray) { value = toList((JSONArray) value); } else if(value instanceof JSONObject) { value = toMap((JSONObject) value); } list.add(value); } return list; } }