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

Android改造GSON抛出“预期的BEGIN_对象,但为BEGIN_数组”

司马昕
2023-03-14

使用改装库来使用一项服务,我为我的界面、模型以及如何使用界面添加了代码。

我不断收到一个GSON抛出的“预期的BEGIN_对象,但是BEGIN_数组”

界面

@GET("api/RetrofitAndroidArrayResponse")
    Call<student> getStudentDetails();

模范公立班学生{

    //Variables that are in our json
    private int StudentId;
    private String StudentName;
    private int StudentMarks;

    //Getters and setters
    public int getStudentId() {
        return StudentId;
    }

    public void setStudentId(int bookId) {
        this.StudentId = StudentId;
    }

    public String getStudentName() {
        return StudentName;
    }

    public void setStudentName(String name) {
        this.StudentName = StudentName;
    }

    public int getStudentMarks() {
        return StudentMarks;
    }

    public void setStudentMarks(String price) {
        this.StudentMarks = StudentMarks;
    }

}

我怎么称呼方法

        void getRetrofitObject() {

            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(url)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();

            object service = retrofit.create(object.class);



            Call<student> call = service.getStudentDetails();

            call.enqueue(new Callback<student>() {
                @Override
                public void onResponse(Response<student> response, Retrofit retrofit) {

                    try {

                        text_id_1.setText("StudentId  :  " + response.body().getStudentId());
                        text_name_1.setText("StudentName  :  " + response.body().getStudentName());
                        text_marks_1.setText("StudentMarks  : " + response.body().getStudentMarks());

                    } catch (Exception e) {
                        Log.d("onResponse", "There is an error");
                        e.printStackTrace();
                    }

                }

                @Override
                public void onFailure(Throwable t) {
                    Log.d("onFailure", t.toString());
                }
            });
        }
    }

共有2个答案

程俊力
2023-03-14

谢谢你的帮助

它愚蠢的错误。调用预期一个对象,并指向返回对象列表的url。

我只是改变了网址和它的工作发现

 @GET("api/RetrofitAndroidObjectResponse")
    Call<Student> getStudentDetails();  
刘浩思
2023-03-14

您收到的响应是数组格式的,但您的模型是学生对象。请提供您收到的JSON响应。使用HttpLoggingInterceptor记录响应。

 类似资料:
  • 问题内容: 我是JSON解析的新手,我使用Square的Retrofit库并遇到了这个问题。 我正在尝试解析此JSON响应: 这是我的模型: 我的界面: 我的成功方法: 当我将其用于成功方法时,会引发错误 预期为BEGIN_OBJECT,但在第1行column2处为BEGIN_ARRAY 怎么了 问题答案: 现在,你正在解析响应,就好像它是这样格式化的: 异常告诉你,你期望在根目录有一个对象,但实

  • 嗨,我是改装2.0库的新手,我在解析一些json时遇到了问题。我在Stackoverflow上看了一些其他的解决方案,但我的问题运气不佳。我试图用改装2.0从Android系统调用一个api。但它抛出了预期的错误BEGIN_ARRAY但BEGIN_OBJECT。 我对web api的回应是: 这就是我的模型类: 这是我的界面: 这就是我打电话的方式:

  • 当我只收到列表中的一个项目时,就会出现这个错误。我在服务器端REST Web服务中使用Jersey,只有当列表返回一个元素时,以及当它有但当它有多个异常时,它工作得非常完美,我就是这样做的: Jersey为什么不发送包含一个项目的列表?是泽西岛的虫子吗?有没有办法让它始终序列化为数组? 这是web服务返回0元素时的JSON数据: 这是web服务返回1个元素时的JSON数据: 当web服务返回超过1

  • 我知道有几个类似的问题,但没有一个与我的问题相符。我有来自服务器的JSON响应,如下所示: 我的模型课是这样的: DataBeacon有信标和网桥对象列表: } 下面是我获取json的界面: 在我看来,一切都应该正常工作,但我仍然遇到了异常:。我不知道为什么——模型的结构应该是正确的。

  • 这个错误又回来了! 我是改装的初学者,我看过这篇文章:改装:预期BEGIN_OBJECT但BEGIN_ARRAY 但是即使我试着让它适应我的模型,我仍然不能让它工作。所以我的错误是: 我得到的是: 解析类的属性: IoTGenericDevice子类的属性: 改装电话: 经理:

  • 您好,我是新来的改装库,我有问题解析一些json。我已经研究了Stackoverflow的一些其他解决方案,但我的问题没有太多的运气。我正在尝试一个简单的网络服务。如有任何建议,将不胜感激。。 json文件 请求方法 Employees.java 雇员萨皮。JAVA 我得到的错误是 我理解错误是说数据是一个对象,它应该以数组开头,但我无法计算出来。。谢谢