2017-08-10 82 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我會試試:) –