Как получить JSON в виде строки, используя модификацию - PullRequest
0 голосов
/ 05 декабря 2018

Пожалуйста, я новичок в модернизации, и вот уже несколько недель я застрял, я попытался получить свой ответ как класс POJO и в итоге получил сообщение об ошибке «Документ Json не был полностью использован», я искал и также спрашиваюэтот вопрос здесь, и никто не смог помочь выбраться из этого

Теперь я хочу получить мой JSON в виде строки из модернизации, чтобы я мог вручную выполнить преобразование в мой класс POJO и не знаю, как получитьответ JSON в виде строки

Пожалуйста, мне нужна ваша помощь Я застрял с этим в течение 3 недель

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Получите gson lib, он сделает это за вас.Вам просто нужно создать объект, который соответствует json, и библиотека установит данные в вашем объекте вместе с вами Json.

0 голосов
/ 05 декабря 2018

просто установите тип ответа как String

@GET("api/offers")
Call<String> loadOffers(); 

вместо

@GET("api/offers")
Call<List<Offer>> loadOffers(); 

добавьте это в свой файл build.gradle

implementation 'com.squareup.retrofit2:converter-scalars:2.1.0'

и в public static Retrofit getRetrofitInstance() {

добавить эти строки в конце функции.важная часть - фабрики конвертации

if (retrofit == null) {
            retrofit = new retrofit2.Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .client(client)
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }

, тогда вы можете получить свои данные в виде строки JSON

MyApi service = RetrofitClientInstance.getRetrofitInstance().create(MyApi.class);


        Call<String> callTypes = service.loadOffers();

        callTypes.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response {                    
                String urJson  = response.body() ; 
               //  DO UR STUFF HERE
            }

            @Override
            public void onFailure(Call<String> call, Throwable t) {

            }
        });

Надеюсь, это поможет вам.

0 голосов
/ 05 декабря 2018

Надеюсь, это поможет вам получить ответ в виде строки.

public interface RetrofitService{
        @GET("/users")
        Call<ResponseBody> listRepos();//function to call api
    }

    RetrofitService service = retrofit.create(RetrofitService.class);
    Call<ResponseBody> result = service.listRepos(username);
    result.enqueue(new Callback<ResponseBody>() {

    @Override
    public void onResponse(Response<ResponseBody> response) {
        try {
            System.out.println(response.body().string());//convert reponse to string
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onFailure(Throwable t) {
        e.printStackTrace();
    }
});

Надеюсь, это будет работать и для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...