当前位置: 首页 > 知识库问答 >
问题:

referfit:onfailure:预期为BEGIN_OBJECT,但路径为BEGIN_ARRAY

梁豪
2023-03-14
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;
    }
}
@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());
            }
        });

    }

希望你能帮我。谢谢!

共有1个答案

陶法
2023-03-14

使用如下所示的“列表”广告:-

**Api interface**

公共接口ApiService{

@POST("register")
@FormUrlEncoded
Call<List<AccessToken>> register(@Field("name") String name, @Field("email") String email, @Field("password") String password);

@POST("login")
@FormUrlEncoded
Call<List<AccessToken>> login(@Field("username") String username, @Field("password") String password);

@GET("users")
Call<List<UserResponse>> users();

}

@OnClick(R.id.btn_get_user)
    void getUsers() {
        call = service.users();
        call.enqueue(new Callback<List<UserResponse>>() {
            @Override
            public void onResponse(Call<List<UserResponse>> call, Response<List<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<List<UserResponse>> call, Throwable t) {
                Log.w(TAG, "onFailure: " + t.getMessage());
            }
        });

    }
 类似资料:
  • 问题内容: 我在列表中仅收到一个项目时收到此错误。我在服务器端REST Web服务中使用Jersey,当List返回一个元素并且当我得到它时,我仅收到错误,但是当它包含多个元素时,它可以正常工作,这就是我的工作方式它: 为什么Jersey不发送包含一个项目的列表?这是球衣的虫子吗?有没有办法使它始终序列化为数组? 当Web服务返回0元素时,这是我的JSON数据: 当Web服务返回1元素时,这是我的

  • 我试图使用gson解析下面的json字符串,并且我得到了这个异常。 异常很明显,它期待一个对象(可能是Datapoint),但它遇到了一个数组。我确信是我的模型类导致了这个问题,但是我不明白我的模型类应该是什么样子才能解析json而不会失败。

  • 问题内容: 我在尝试将JSON解组到对象中时遇到GSON错误。错误( 应为BEGIN_OBJECT,但在第3行第22列处为STRING )指向下面输入的第3行。 我是否相对于Bean正确映射了JSON? 我输入的JSON看起来是这样的: 问题答案: 不,您没有正确映射它,因为您的json对象不是,它包含。 你可以创建一个类只是为了封装你,但它是清洁反序列化容器的使用 然后使用解析有趣的内容 并且我

  • 我有一个JSON对象,如下所示:

  • 我正面临一个关于GSON json到Java的问题。我在这里查了很多帖子,但我找不到我的问题的解决方案。所以我在这里列出我的问题。谢谢! 以下是我的Json数据 非常非常感谢!!

  • 我的Retrofit2调用出现以下异常: 学分类别: