【发布时间】:2018-07-03 11:42:04
【问题描述】:
我正在使用改造和 laravel 后端 api 编写一个 android 应用程序。 我的问题是:我想用 api 找回用户,这在 chrome:inspector 中看起来很好,但 logcat 显示:onFailure: Expected BEGIN_OBJECT but was BEGIN_ARRAY at path $
我的界面:
public interface ApiService {
@POST("register")
@FormUrlEncoded
Call<AccessToken> register(@Field("name") String name, @Field("email") String email, @Field("password") String password);
@POST("login")
@FormUrlEncoded
Call<AccessToken> login(@Field("username") String username, @Field("password") String password);
@GET("users")
Call<UserResponse> users();
}
我的响应类
import java.util.List;
public class UserResponse {
List<User> data;
public List<User> getData() {
return data;
}
我的用户模型
public class User {
int id;
String name;
String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
还有我的 api 调用:
@OnClick(R.id.btn_get_user)
void getUsers() {
call = service.users();
call.enqueue(new Callback<UserResponse>() {
@Override
public void onResponse(Call<UserResponse> call, Response<UserResponse> response) {
Log.w(TAG, "onResponse: " + response);
if (response.isSuccessful()) {
username.setText(response.body().getData().get(0).getName());
} else {
startActivity(new Intent(GameActivity.this, LoginActivity.class));
finish();
tokenManager.deleteToken();
}
}
@Override
public void onFailure(Call<UserResponse> call, Throwable t) {
Log.w(TAG, "onFailure: " + t.getMessage());
}
});
}
希望你能帮助我。 谢谢!
【问题讨论】:
-
无效的 json 解析。您正在尝试将数组解析为对象。