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

改造引发错误应为BEGIN_数组,但为BEGIN_对象

扶文光
2023-03-14

您好,我是新来的改装库,我有问题解析一些json。我已经研究了Stackoverflow的一些其他解决方案,但我的问题没有太多的运气。我正在尝试一个简单的网络服务。如有任何建议,将不胜感激。。

json文件

{"employees":[
{"firstName":"John", "lastName":"Doe"}, 
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}

请求方法

public void requestEmployeeData(String uri){
        RestAdapter adapter = new RestAdapter.Builder().setEndpoint(ENDPOINT).build();
        EmployeesAPI employeesAPI =adapter.create(EmployeesAPI.class);
        employeesAPI.getEmployees(new Callback<List<Employees.employeesclass>>() {
            @Override
            public void success(List<Employees.employeesclass> employees, Response response) {
                List<String> names = new ArrayList<String>();
                Log.v("nas", "The Employees Webservice Success" + response);
            }

            @Override
            public void failure(RetrofitError retrofitError) {
                Log.v("nas", "The Employees Webservice Failed " + retrofitError);
            }
        });
    }

Employees.java

public class Employees {
// List<String> listOfStrings = new ArrayList<String>();
@SerializedName(value="employees")
public List<Employees> employees;

public void setEmployees(List<Employees> employees) {
    this.employees = employees;

}

public static class employeesclass {
    String firstName;
    String lastName;


    @Override
    public String toString() {
        return (firstName + " " + lastName);

    }
}

}

雇员萨皮。JAVA

public interface EmployeesAPI {
@GET("/get_names.json")
public void getEmployees(Callback<List<Employees.employeesclass>> response);
}

我得到的错误是

The Employees Webservice Failed retrofit.RetrofitError: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

我理解错误是说数据是一个对象,它应该以数组开头,但我无法计算出来。。谢谢

共有1个答案

穆飞龙
2023-03-14

您正在混合员工员工类课程。试着用这个来代替:

public class Employees {

    @SerializedName(value="employees")
    public List<employeesclass> employees;

    public void setEmployees(List<employeesclass> employees) {
        this.employees = employees;

    }

    // employeesclass definition

}

然后相应地更改您的接口和请求员工数据方法

public interface EmployeesAPI {
    @GET("/get_names.json")
    public void getEmployees(Callback<Employees> response);
}
 类似资料:
  • 这个错误又回来了! 我是改装的初学者,我看过这篇文章:改装:预期BEGIN_OBJECT但BEGIN_ARRAY 但是即使我试着让它适应我的模型,我仍然不能让它工作。所以我的错误是: 我得到的是: 解析类的属性: IoTGenericDevice子类的属性: 改装电话: 经理:

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

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

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

  • 我知道以前有人问过很多这个问题,但在我的情况下,我找不到解决办法。我请求获得关于POJO(电影)列表的json回复 虽然这是我第一次使用改型,但我在标题中遇到了问题。我正在创建的url是正确的,下面是响应的示例: 这是我的模特 } 我的@GET 我的数据请求类 最后,我想在我的主要活动中做些什么

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