private static Object getListFromJsonArray(JSONArray jsonArr) {
      List<Object> list = new ArrayList<Object>();
      for (int i = 0; i < jsonArr.size(); i++) {
        JSONValue jsonVal = jsonArr.get(i);
        if (jsonVal instanceof JSONNull) {
          list.add(null);
        } else if (jsonVal instanceof JSONBoolean) {
          list.add(((JSONBoolean) jsonVal).booleanValue());
        } else if (jsonVal instanceof JSONNumber) {
          list.add(new Integer((int) ((JSONNumber) jsonVal).doubleValue()));
        } else if (jsonVal instanceof JSONString) {
          list.add(((JSONString) jsonVal).stringValue());
        } else if (jsonVal instanceof JSONArray) {
          list.add(getListFromJsonArray((JSONArray) jsonVal));
        } else if (jsonVal instanceof JSONObject) {
          list.add(getMapFromJsonObject((JSONObject) jsonVal));
        } else {
          throw new IllegalStateException("Invalid JSONValue encountered");
        }
      }
      return list;
    }