请问我是新手,现在已经被困了好几周了,我尝试以POJO类作为响应,最后出现错误“ Json文档未完全使用”,我进行了搜索并询问这个问题在这里,没有人能够帮助摆脱这个问题
现在我想从改型中获取JSON作为字符串,这样我就可以自己手动转换为POJO类,并且不知道如何将响应JSON作为字符串获取
请帮助我,我已经坚持了三个星期
答案 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一起在您的对象中设置数据。