2017-08-10 83 views
0

Json有效,但通过解析。 GSON,它提供了错误:Android Gson,尝试解析来自服务器的json响应的错误

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 439

我已经贴了整个的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; 
     ------- 
} 

任何帮助将不胜感激!

+0

我也问过类似的问题昨天我希望这有助于:) [检查这个(https://stackoverflow.com /问题/ 45584210/rxjava-改装的错误预期,开始阵列,但是,是期初对象-AT-LINE-1-科拉姆) – Abhijeet

+0

请分享你,莫代尔类,JSON是罚款, “formFields” 对象,你正在使用不是数组,并且响应来自服务器是数组类型 –

+2

'formFields'应声明为'List formFields;'。 –

回答

2

您的JSON开始

{"results":[.... so its essentialy an object that has an array field with key "results"

尝试创建一个包装类,这将是这样的:

class MyWrapper { 
    List<Form> results; 
} 

这应该让你去。

编辑1(用户添加的结果解析):尝试用列表替换领域,并创建一个简单的FormField类只有一个字段(标题前)用于测试目的,看看它是如何去。 (顺便说一句贴在所有相关的部分代码,整个模型,将是我们更容易发现错误)

+0

我提取json数组,然后将其提供给Gson。检查我的更新代码。 –

+0

谢谢JanBo我会试试:) –