如何使用改造将 JSON 作为字符串获取

Eid*_*ris 2 api rest android json retrofit2

请我是改造的新手,我已经被困了好几个星期了,我尝试在 POJO 类中得到我的回复,但最终出现了这个错误“Json 文档没有被完全消耗”,我已经搜索过,也在这里问过这个问题没有人能够帮助摆脱这种情况

现在我想从改造中获取我的 JSON 作为字符串,这样我就可以自己手动转换为我的 POJO 类,并且不知道如何将响应 JSON 获取为字符串

请我需要你的帮助我已经坚持了 3 周

Dia*_*ada 11

只需将响应类型设置为字符串

@GET("api/offers")
Call<String> loadOffers(); 
Run Code Online (Sandbox Code Playgroud)

代替

@GET("api/offers")
Call<List<Offer>> loadOffers(); 
Run Code Online (Sandbox Code Playgroud)

将此添加到您的 build.gradle 文件中

implementation 'com.squareup.retrofit2:converter-scalars:2.1.0'
Run Code Online (Sandbox Code Playgroud)

并在 public static Retrofit getRetrofitInstance() {

在函数的末尾添加这些行。重要的部分是转换工厂

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

然后你可以获取你的数据作为 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) {

            }
        });
Run Code Online (Sandbox Code Playgroud)

我希望这能帮到您。