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

改造需要BEGIN_数组,但BEGIN_对象异常

商和雅
2023-03-14

我知道有几个类似的问题,但没有一个与我的问题相符。我有来自服务器的JSON响应,如下所示:

{
  "data": {
    "list": {
      "beacons": [
        {
          "id": 56,
          "beacon_id": "56",
          "bridge_id": null,
          "mesh_id": null,
          "name": "Test beacon wcx",
          "location": "test",
          "mac_address": "e6:f5:8a:94:b8:c7",
          "firmware": "1.1",
          "pcb_revision": "2.0",
          "battery_level": null,
          "password": "0000",
          "ib": {
            "turn_on": "1",
            "major": "300",
            "minor": "10",
            "tx_power": "4",
            "interval": "400",
            "uuid": "dae19960-18ea-11e5-8ff0-0002a5d5c521",
            "secure_uuid": "0"
          },
          "euid": {
            "turn_on": "0",
            "namespace": null,
            "instance": null,
            "tx_power": null,
            "interval": null
          },
          "eeid": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null
          },
          "eurl": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null,
            "url": null
          },
          "etlm": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null
          }
        },
        {
          "id": 57,
          "beacon_id": "57",
          "bridge_id": "13",
          "mesh_id": "278",
          "name": "Marta B",
          "location": "lk",
          "mac_address": "e1:4b:64:c3:80:e2",
          "firmware": "2.1",
          "pcb_revision": "2.0",
          "battery_level": "97",
          "password": "0000",
          "ib": {
            "turn_on": "1",
            "major": "300",
            "minor": "6",
            "tx_power": "0",
            "interval": "0",
            "uuid": "dae19960-18ea-11e5-8ff0-0002a5d5c521",
            "secure_uuid": "0"
          },
          "euid": {
            "turn_on": "0",
            "namespace": null,
            "instance": null,
            "tx_power": null,
            "interval": null
          },
          "eeid": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null
          },
          "eurl": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null,
            "url": null
          },
          "etlm": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null
          }
        },
        {
          "id": 58,
          "beacon_id": "58",
          "bridge_id": null,
          "mesh_id": null,
          "name": "Marta C",
          "location": "abcdlk",
          "mac_address": "3c:cf:82:8a:e7:fe",
          "firmware": "2.1",
          "pcb_revision": "2.0",
          "battery_level": "99",
          "password": "0000",
          "ib": {
            "turn_on": "1",
            "major": "300",
            "minor": "39",
            "tx_power": "7",
            "interval": "400",
            "uuid": "dae19960-18ea-11e5-8ff0-0002a5d5c521",
            "secure_uuid": "0"
          },
          "euid": {
            "turn_on": "0",
            "namespace": null,
            "instance": null,
            "tx_power": null,
            "interval": null
          },
          "eeid": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null
          },
          "eurl": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null,
            "url": null
          },
          "etlm": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null
          }
        }
      ],
      "bridges": [
        {
          "id": 13,
          "name": "Test bridge wcx",
          "location": "netizens",
          "mac_address": "c9:1d:76:cc:a7:ca",
          "ib": {
            "turn_on": 1,
            "major": "100",
            "minor": "102",
            "tx_power": "6",
            "interval": "400",
            "uuid": "dae19960-18ea-11e5-8ff0-0002a5d5c521",
            "secure_uuid": 0
          },
          "euid": {
            "turn_on": "0",
            "namespace": null,
            "instance": null,
            "tx_power": null,
            "interval": null
          },
          "eeid": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null
          },
          "eurl": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null,
            "url": null
          },
          "etlm": {
            "turn_on": "0",
            "tx_power": null,
            "interval": null
          }
        }
      ]
    }
  },
  "ver": 1,
  "time": 1475576646,
  "status": 1,
  "status_msg": ""
}

我的模型课是这样的:

public class BeaconResponse {
@Expose
public DataBeacon dataBeacon;
@Expose
public int ver;
@Expose
public long time;
@Expose
public int status;
@Expose
public String status_msg;

DataBeacon有信标和网桥对象列表:

@Table(name = "dataBeacon", id = "_id")

public class DataBeacon extends Model {
@Column(name = "beacon",onUpdate = Column.ForeignKeyAction.CASCADE, onDelete = Column.ForeignKeyAction.CASCADE)
public List<BeaconsModel> beacons;
@Column(name = "bridge",onUpdate = Column.ForeignKeyAction.CASCADE, onDelete = Column.ForeignKeyAction.CASCADE)
public List<BridgeModel> bridges;

}

下面是我获取json的界面:

@GET("/api/mobile/{language}/{apiVersion}/beacons/list")
    void beaconsList(Callback<BasicResponse<BeaconsListResponse>> callback);

public class BeaconsListResponse {
    @Expose
    public List<BeaconResponse> list;
}

在我看来,一切都应该正常工作,但我仍然遇到了异常:预期的BEGIN_数组,但在第1行第18列path$处是BEGIN_对象。数据列表。我不知道为什么——模型的结构应该是正确的。

共有1个答案

岳均
2023-03-14

您的模型与JSON响应不匹配,JSON响应返回一个对象,但是您的模型需要一个列表,因此会出现错误。

我认为你应该重新设计你的模型如下:

public class BeaconResponse
{
    private Data data;
    public int ver;
    public long time;
    public int status;
    public String status_msg;
}

public class Data
{
    private List list;
}

public class List
{
    private Beacons[] beacons;
    private Bridges[] bridges;
}

然后,您应该更新您的改装界面,以期望BeaconResponse而不是BeaconListResponse

void beaconsList(Callback<BasicResponse<BeaconsResponse>> callback);

请注意,我没有提供完整详细的模型,只是想解释如何将模型与JSON响应相匹配。只需继续添加您的模型详细信息,以便能够测试您的应用程序,并让我们知道它是否有效。

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

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

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

  • 使用改装库来使用一项服务,我为我的界面、模型以及如何使用界面添加了代码。 我不断收到一个GSON抛出的“预期的BEGIN_对象,但是BEGIN_数组” 界面 模范公立班学生{ 我怎么称呼方法

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

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