当前位置: 首页 > 面试题库 >

Android JSon错误“预期为BEGIN_OBJECT,但在第1行第2列为BEGIN_ARRAY”

邓元白
2023-03-14
问题内容

我从Web服务获取JSon数据,示例数据如下:

[
  {
    "SectionId": 1,
    "SectionName": "Android"
  }
]

当我尝试将其转换时,它将引发错误,我这样做是:

Data data = new Gson().fromJson(jsonDataFromWebService, Data.class);

我的班级是:

class Section
{
    public int SectionId;
    public String SectionName;
}

class Data {
    public List<Section> sections;
}

LogCat说:

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT,但在第1行第2列为BEGIN_ARRAY


问题答案:

错误说明发生了什么问题…您返回的是数组而不是JSon对象

尝试如下:

JSONArray ja = new JSONArray(jsonStringReturnedByService);

Data sections = new Data();

for (int i = 0; i < ja.length(); i++) {
    Section s = new Section();
    JSONObject jsonSection = ja.getJSONObject(i);

    s.SectionId = Integer.ValueOf(jsonSection.getString("SectionId"));
    s.SectionName = jsonSection.getString("SectionName");

   //add it to sections list
   sections.add(s);
}

return sections;


 类似资料:
  • 问题内容: 我遇到错误了。 由于以下原因,无法解析JSON:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_ARRAY,但在第1行第2列为BEGIN_OBJECT 服务器网址 执行请求 上课后 我该如何解决? 问题答案: 您在注释中声明返回的JSON是这样的: 您告诉Gson您有一个对象数组:

  • 我是android编程新手。我有一个类,在这个类中,修改API调用是为了解析和显示JSON文件中的几个属性。但我得到: Java语言lang.IllegalStateException:应为BEGIN\u对象,但在第2行第1列为字符串 好心帮忙。我搜索了答案,但没有发现JSON响应有任何问题。发布了我的JSON响应和JAVA类: JSON响应: JAVA文件: 模型类:

  • 问题内容: 我刚从gson开始,我想解析一个以对象开头的JSON字符串,并且总是得到相同的错误JSON。 我一直遇到错误: 我的日志中的错误指向这一行: 这是我的pojo 问题答案: 您的主类将数据作为列表。您的JSON将其作为对象。类型需要匹配。如果您希望main中只有1个数据,请不要使用列表。如果期望1个或多个数据,则使生成数据的代码向下发送一个数组(即使该数组中只有1个对象)。

  • 问题内容: 我有这种方法: 我想解析一个JSON: 但是我收到一条错误消息: com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT,但位于第1行第1列 问题答案: 即使没有看到您的JSON字符串,您也可以从错误消息中得知,它不是要解析为类实例的正确结构。 Gson希望您的JSON字符串

  • 在尝试将json文本文件解析为餐厅对象的数组列表时,我遇到了错误“应为BEGIN\u数组,但在第1行第2列路径处为BEGIN\u对象。”我不知道哪里弄错了,因为我的Restaurant类中的数据成员与json文件中的字段完全对应。 主要的 餐厅类 txt文件

  • 问题内容: 我知道这不是第一次有人问这个问题,但是有了Retrofit2,我找不到适合我问题的正确解决方案。我遵循了在线教程,效果很好。当我将相同的代码应用于自己的端点时,会出现以下异常:我不知道该如何解决。 接口: 客户代码: 此代码与此有效负载一起使用: 但与此不: 我的音乐课: 问题答案: 当您说“此代码正在使用此有效负载:…而不是与此有效:: …”时,这是预期的,这就是假定的工作方式。实际