【问题标题】:Android Gson, error trying to parse json response from serverAndroid Gson,尝试解析来自服务器的 json 响应时出错
【发布时间】:2017-08-10 19:44:24
【问题描述】:

Json 是有效的,但在通过解析时。 Gson,它给出了错误:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 应为 BEGIN_OBJECT,但在第 1 行第 439 列是 BEGIN_ARRAY

我已经粘贴了整个 Json here

第 439 列指的是 "formFields":[{"(粘贴箱中的第 5 行)中的最后一个字符(引号)。

要解析的代码:

JSONArray results = jsonObject.getJSONArray("results");
String s = results.toString();
Type token = new TypeToken<List<Form>>(){}.getType();
List<Form> formArrayList1 = new Gson().fromJson(s, token);

表单模型具有根json数组中每个json对象中的所有元素。

public class Form{
       -------
       -------
       JSONArray formFields;
       -------
}

任何帮助将不胜感激!

【问题讨论】:

  • 我昨天也问过类似的问题,希望对你有帮助:) Check this
  • 请分享,模态类,json很好,你使用的“formFields”对象不是数组,来自服务器的响应是数组类型
  • formFields 应声明为List&lt;SomeClass&gt; formFields;
  • 您可以使用:jsonschema2pojo.org 创建模型类。它会做两件事。 1)验证json是否有效。 2) 创建有效的 Java POJO
  • @PramodYadav 从我在 JSON 中看到的 formFieldsJSONArray 和模型 FormformFields 具有相同的签名。如果我错了,请纠正我。

标签: android json gson android-json


【解决方案1】:

你的 json 以

开头

{"results":[.... 所以它本质上是一个对象,它有一个带有键“results”的数组字段

尝试创建一个类似于以下内容的包装类:

class MyWrapper {
   List<Form> results;
}

这应该能让你继续前进。

编辑 1(用户添加了结果解析):尝试用 List 替换字段并创建一个简单的 FormField 类,其中只有一个字段(例如标题)用于测试目的,看看它是如何进行的。 (顺便贴一下所有相关的代码部分和整个模型,这样我们更容易发现错误)

【讨论】:

  • 我正在提取 json 数组,然后将其提供给 Gson。检查我更新的代码。
  • 谢谢 JanBo 我会试试看 :)
猜你喜欢
  • 2013-02-13
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多