我知道这个问题已经被问了很多,但我所看到的答案都没有帮助我澄清这个问题。我需要更多的指导方针,而不是一个具体的答案。
{
"ok": [
{
"id": 1,
"username": "test",
"pass": "123",
"reg_date": "2020-05-27 00:00:00"
}
]
}
{
"error": [
{
"message": "No such user"
}
]
}
错误,没有这样的用户
到目前为止,我所尝试的是为列表中收到的每个对象创建一个类:
public class EntityUser {
@SerializedName("id")
private int id;
@SerializedName("username")
private String username;
@SerializedName("pass")
private String password;
@SerializedName("reg_date")
private String registerDate;
//Getters and constructor...
}
public class EntityError {
@SerializedName("message")
private String message;
//Getters and constructor...
}
和Api,我认为这就是问题所在:
public interface JsonApi {
@GET("SelectUser.php")
Call<Map<String, List>> getGenericResponse();
}
Gson gson = new GsonBuilder().setLenient().create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://192.168.0.35/app_android/webservices/")
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
JsonApi jsonApi = retrofit.create(JsonApi.class);
Call<Map<String, List>> call = jsonApi.getGenericResponse();
call.enqueue(new Callback<Map<String, List>>() {
@Override
public void onResponse(Call<Map<String, List>> call, Response<Map<String, List>> response) {
if(response.isSuccessful()){
if (response.body().containsKey("ok")){
//Here i need to create instance of EntityUsr so I can bind the values to his vars
}if(response.body().containsKey("error")){
//Shows an error message according to the message value
}
}
}
@Override
public void onFailure(Call<Map<String, List>> call, Throwable t) {
prueba.setText("Error: " + t.getMessage());
}
});
提前感谢!!
您可以使用简单的方法而不是将其解析为映射
userresponse
public class UserResponse {
@SerializedName("ok")
private ArrayList<EntityUser> users;
@SerializedName("error")
private ArrayList<EntityError> errors;
}
public interface JsonApi {
@GET("SelectUser.php")
Call<UserResponse> getGenericResponse();
}
if (response.body().getUsers() != null){
// return list users
}if(response.body().getErrors != null){
// return list errors
}
这是我在改装2.0中获得回应的逻辑 现在他们对API进行了更改,数据如下: 如何处理ONResponse中的对象并解析数组中的钱包信息?
我正在使用Retrofit和Gson从REST服务获取数据。它运行完美,但仅当API不返回错误时。通常,API返回对象列表(作为json),但当发生错误时,API返回单个错误对象。我正在尝试获取
以下是GSON的例外: 改型实例是使用GsonConverterFactory创建的
我使用的API根据成功/失败有不同的json响应。它们不是HTTP错误,而是json主体中的代码。 我添加了一个,但感觉我只是把事情放在一起,忽略了问题。这是一种可接受的或“pythonic”的方式来处理类似的不同响应吗?另外,如果存在状态,我是否正确地使用来跳过该行?
我想知道如何将response.body()作为参数传递,以便进一步处理它。因为现在我只能将其传递给Toast或text View的setText,它工作得很好。但是如果我尝试将其传递给将其保存为SharedPrefs或类似的函数,它只是传递一个空对象。我不明白为什么第一个有效,但第二个无效,有什么区别? 我的JSON响应正文如下所示: 我的Pojo是这样的: 我执行调用的函数(在点击登录按钮后调
我使用改造2.7.1与静态编程语言协程。 我的改装服务定义如下: 此调用返回HTTP 204无内容响应,这会导致改装时崩溃: 如何使用协程处理改造中的204响应而不崩溃?