Как обработать ответ на вызов в виде строки?

#java #android #json #api

#java #Android #json #API

Вопрос:

Я сейчас в затруднительном положении. Мой API возвращает токен для входа в систему при публикации нового пользователя с помощью UserData. Как мне получить response.body() в виде строки, чтобы сохранить ее?

Он возвращает объект Post только то, чего я на самом деле не хочу. Я использую его только для создания поста.

  private void createPost(User user) {

        Post post = new Post(user.getName(), user.getGender(), user.getBirthyear(), user.getHeight(),user.getWeight());
        Call<Post> call = jsonmongo.createPost(post);
        // To execute it asynchron
        call.enqueue(new Callback<Post>() {
            @Override
            public void onResponse(Call<Post> call, Response<Post> response) {
                if (!response.isSuccessful()) {
                    Log.e("RESPONSECODE", ""  response.code());
                    return;
                }                    
                Log.e("RESPONSECODE", ""  response.code());
            }

            @Override
            public void onFailure(Call<Post> call, Throwable t) {
                Log.e("RESPONSECODE", ""  t.getMessage());
            }
        });
    }
 

Получите ответ.Тело и сохраните его в базе данных через SQL Adapter ( adapter.addToken(response.body()) )

response.body().toString возвращает только ссылку на объект ( com.example.Resources.Post@4c8352 )

String S = new Gson().toJson(response.body())
Log.e("JSON", S)

Возвращает это:

E/JSON: {"age":0,"gender":0,"height":0,"weight":0}

Желаемый результат: E/JSON: {"token":aslfjkhr9RRRRf283FGr3489pjfGGG34HH89fj}

Комментарии:

1. .toString() не работает для вас в этом случае?

2. .toString возвращает только ссылку на объект ( com.example. Ресурсы. Сообщение @4c8352 )

3. Вы правы, извините за это. В этом случае я использую библиотеку Gson, попробуйте: new Gson().toJSON(ваш объект);

4. Проблема в том, что мой объект Post имеет переменные, отличные от возвращаемого моего Json. например, переменная теряется в процессе.

5. Я указываю «имя, пол…», а взамен получаю «жетон». Мой объект Post не содержит токена. Нужно ли мне добавлять его, или я могу каким-то образом сохранить тело другим способом?

Ответ №1:

позвольте мне попробовать… вы можете использовать библиотеку Gson для создания объекта String json из ответа.

Попробуйте:

 new Gson().toJson(response);
 

Комментарии:

1. Не работает. Возвращает пустой вывод Json: E/JSON: {«возраст»: 0, «пол»:0, «рост»:0, «вес»:0}