public static Map<String, Object> getMapFromJsonObject(JSONObject jsonObj) {
      Map<String, Object> map = new HashMap<String, Object>();
      for (String key : jsonObj.keySet()) {
        JSONValue jsonVal = jsonObj.get(key);
        if (jsonVal instanceof JSONNull) {
          map.put(key, null);
        } else if (jsonVal instanceof JSONBoolean) {
          map.put(key, ((JSONBoolean) jsonVal).booleanValue());
        } else if (jsonVal instanceof JSONNumber) {
          map.put(key, new Integer((int) ((JSONNumber) jsonVal).doubleValue()));
        } else if (jsonVal instanceof JSONString) {
          map.put(key, ((JSONString) jsonVal).stringValue());
        } else if (jsonVal instanceof JSONArray) {
          map.put(key, getListFromJsonArray((JSONArray) jsonVal));
        } else if (jsonVal instanceof JSONObject) {
          map.put(key, getMapFromJsonObject((JSONObject) jsonVal));
        } else {
          throw new IllegalStateException("Invalid JSONValue encountered");
        }
      }
      return map;
    }