2017-08-10 3 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; 
     ------- 
} 

助けてください!これは、あなたが軌道に乗る必要があります

class MyWrapper { 
    List<Form> results; 
} 

+0

昨日私はこれが助けてくれることを願っています:) [これをチェック](https://stackoverflow.com/question/45584210/rxjava-retrofit-error-expected-array-begin-object-at-line-1-colum) – Abhijeet

+0

あなた、モーダルクラスを共有してください、jsonは大丈夫です、 "formFields"オブジェクト使用していない配列を使用しており、サーバからの応答が配列型のものである –

+2

'formFields'は' List formFields; 'として宣言されるべきです。 –

答えて

2

あなたのJSONが

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

で始まるのようなものになりますラッパークラスを作成してください。

編集1(ユーザーは結果の解析を追加しました):フィールドをListに置き換えて、テスト目的で1つのフィールド(タイトルはex)の単純なFormFieldクラスを作成し、その動作を確認してください。 (btwは、すべての関連するコードパーツとモデル全体をペーストして、エラーを見つけやすくなります)

+0

json配列を抽出してGsonに提供しています。更新されたコードを確認してください。 –

+0

ありがとうJanBo私はそれを試してみる:) –

関連する問題