public void parseApiError(JSONArray jsonArray) throws JSONException {

    if (jsonArray.length() <= 0) {
      // no error, we should return
      return;
    }

    // clear old values
    errorList.clear();

    // add new values
    for (int i = 0; i < jsonArray.length(); i++) {
      JSONObject jsonObject = jsonArray.getJSONObject(i);
      ApiFault apiFault = new ApiFault();
      apiFault.parseData(jsonObject);
      errorList.add(apiFault);
    }
  }
  public void parseHttpDataAll(JSONObject jsonObject) throws JSONException {

    _rootJsonObject = jsonObject;

    parseApiError(_rootJsonObject.getJSONArray("errors"));

    if (hasError()) {
      // api return error, we should return
      if (AppConfig.getApiMessageDebug()) {
        for (ApiFault apiFault : errorList) {
          LogUtils.d(this.getClass().getSimpleName(), apiFault.toString());
        }
      }
      mListener.onApiError(errorList);
      return;
    }

    mListener.onApiDone(parseResultData(jsonObject.getJSONObject("data")));
  }