如何使用翻新方式将JSON作为字符串获取

时间:2018-12-05 13:48:50

标签: android json rest api retrofit2

请问我是新手,现在已经被困了好几周了,我尝试以POJO类作为响应,最后出现错误“ Json文档未完全使用”,我进行了搜索并询问这个问题在这里,没有人能够帮助摆脱这个问题

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

请帮助我,我已经坚持了三个星期

3 个答案:

答案 0 :(得分:1)

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

@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) {

            }
        });

我希望这会对您有所帮助。

答案 1 :(得分:0)

我希望这会帮助您以字符串形式获取响应。

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();
    }
});

希望这对您也有用。

答案 2 :(得分:0)

获取gson库,它将为您完成。您只需创建一个适合json的对象,然后lib便会与Json一起在您的对象中设置数据。