我有json数据,我使用gson转换器进行解析,并对pojo类进行响应并显示它。我变得空了。我已经看到很多关于这方面的问题,但我没有得到太多解决方案。看看我做错了什么。我是新改造的。
{
"loginj": [
{
"JUser_Id": "20",
"JFullName": "aaa",
"JEmail": "abc@gmail.com"
}
]
}
请参阅我的改造构建器类
public static APIInterface getInterfaceService() {
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
final APIInterface mInterfaceService = retrofit.create(APIInterface.class);
return mInterfaceService;
}
模型类
public class Loginj {
private String JUser_Id;
private String JFullName;
private String JEmail;
}
回调类APIInterface
Call<Loginj> login(@Body User user);
得到回应
Call<Loginj> loginResponseCall = apiInterface.login(user);
loginResponseCall.enqueue(new Callback<Loginj> () {
@Override
public void onResponse(Call<Loginj> call, Response<Loginj> response) {
if (response.isSuccessful()) {
Loginj bodywValue = response.body();
Toast.makeText(getApplicationContext(),""+bodywValue.getJFullName(),
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Loginj> call, Throwable t){}
答案 0 :(得分:2)
选项1:
此处您的回复位于数组中,您需要像这样更改
{
"JUser_Id":"20",
"JFullName":"aaa",
"JEmail":"abc@gmail.com"
}
选项2:
如果您无法更改API响应,请为与您的响应JSON匹配的响应创建pojo。
public class RestResponse {
public List<Loginj> loginj;
}
你的代码看起来应该是这样的
Call<RestResponse> loginResponseCall = apiInterface.login(user);
loginResponseCall.enqueue(new Callback<RestResponse> () {
@Override
public void onResponse(Call<RestResponse> call, Response<RestResponse> response) {
if (response.isSuccessful()) {
RestResponse body = response.body();
Loginj bodywValue = body.loginj.get(0);
Toast.makeText(getApplicationContext(),""+bodywValue.getJFullName(),Toast.LENGTH_SHORT).show();
}}
@Override
public void onFailure
(Call<RestResponse> call, Throwable t){
}
答案 1 :(得分:2)
如果你json
示例是正确的,那么loginj
是一个对象数组,但是你要说改造,你想要一个对象。
尝试这样的事情:
public class Loginj {
private List<LoginjData> loginj;
private class LoginjData {
private String JUser_Id;
private String JFullName;
private String JEmail;
}
}
答案 2 :(得分:0)
再制作一个Model类。
public class ANY_NAME{
private List<Loginj> loginj;
}
并替换此代码:
Call<Loginj> login(@Body User user);
有了这个:
Call<ANY_NAME> login(@Body User user);
您的代码可以使用