Как разместить параметры внутри JsonObject, используя Volley - PullRequest
0 голосов
/ 15 февраля 2019

Я хочу отправить параметры в определенном формате на сервер.

Это формат:

{
                   "institute": {
                       "name": $scope.formData.institute_name,
                       "state": $scope.formData.state,
                       "city": $scope.formData.city,
                       "pin_code": $scope.formData.pincode,
                       "nature": $scope.formData.nature,
                   },
                   "user": {
                       "role": $scope.formData.role,
                       "user_id": $scope.user_id
                   }
               };

И я могу отправить в этом формате, ноПроблема заключается в значении institute, а user в виде строки.И я хочу, чтобы значение внутри него также использовалось как ключ и значение.

Поэтому мне нужно возвращать такие параметры, как Map<String,Map<String,String>> this

Я пытался это сделать, но это не сработало

 @Override
        protected Map<String, String> getParams() throws AuthFailureError {

            Map<String, String> instituteParams = new HashMap<>();
            instituteParams.put("name", institute);
            instituteParams.put("state", state);
            instituteParams.put("city", city);
            instituteParams.put("pin_code", pincode);
            instituteParams.put("nature", nature);

            JSONObject objectInstitute = new JSONObject(instituteParams);

            Map<String, String> userParams = new HashMap<>();
            userParams.put("role", role);
            userParams.put("user_id", userid);

            JSONObject objectUser = new JSONObject(userParams);

            Map<String, String> params = new HashMap<>();
            params.put("institute", objectInstitute.toString());
            params.put("user", objectUser.toString());
            return params;
        }

1 Ответ

0 голосов
/ 15 февраля 2019

@ Аджай, есть много способов сделать это.Мы можем проанализировать пользовательский объект Object с помощью библиотеки gson или Map (подход, которому вы следуете) или напрямую создать JSONObject.

Я создал 2 версии метода, хотя ver2 кажется лучшим, если ваш результат не будет достигнут;а также очень описательный.

private JSONObject getParamsVer1() throws JSONException {
    Map<String, String> instituteParams = new HashMap<>();
    instituteParams.put("name", "");
    instituteParams.put("state", "");
    instituteParams.put("city", "");
    instituteParams.put("pin_code", "");
    instituteParams.put("nature", "");

    JSONObject objectInstitute = new JSONObject(instituteParams);

    Map<String, String> userParams = new HashMap<>();
    userParams.put("role", "");
    userParams.put("user_id", "");

    JSONObject objectUser = new JSONObject(userParams);

    Map<String, JSONObject> params = new HashMap<>();
    params.put("institute", objectInstitute);
    params.put("user", objectUser);

    return new JSONObject(params);
}

private JSONObject getParamsVer2() throws JSONException {
    JSONObject jsonObject = new JSONObject() {
        {
            put("institute", new JSONObject(){
                {
                    put("name", "");
                    put("state", "");
                    put("city", "");
                    put("pin_code", "");
                    put("nature", "");
                }
            });
            put("user", new JSONObject(){
                {
                    put("role", "");
                    put("user_id", "");
                }
            });
        }
    };
    return jsonObject;
}

Попытайтесь выяснить свою ошибку в ver1 метода.Но снова я скажу, что ver2 лучше всего подходит для этого сценария и очень аккуратный, иерархический метод.

...