2016-12-29 18 views
1

でした。 私はサーバーから受信しているオブジェクトが複数の種類になる可能性があるという状況があります。これは、空のArrayListでもかまいませんが、値が入力されたObject型でも、状況によって異なります。私はGSONエラーAndroid GSON変換エラー - BEGIN_OBJECTは予想されましたが、BEGIN_ARRAYは

java.lang.RuntimeException: An error occurred while executing doInBackground() 
                   at android.support.v4.content.ModernAsyncTask$3.done(ModernAsyncTask.java:161) 
                   at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
                   at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
                   at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                   at java.lang.Thread.run(Thread.java:818) 
                  Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 360 path $.user_fields 

を取得している理由

は、最後の質問はGSON libに最も単純な方法で、サーバーからの応答を変換するために、右のクライアント側のオブジェクトを構築する方法ですか?

+0

オブジェクトは期待していますが、応答は配列 –

+0

を返していますが、オブジェクトがない場合は空の配列が、サーバーに情報がある場合はオブジェクトが返されます –

+1

jsonの解析方法を教えてください。コードを追加します。なぜサーバーの応答が空の配列ですか?なぜ空のオブジェクトではないのですか? – AndroidRuntimeException

答えて

0

開発者のバックエンドに質問します。なぜ、空の配列か、なぜオブジェクトが埋め込まれたのかです。 私たちの目標は、このような状況を解決することです。

私は別の方法でそれをやった。 私の場合、プロパティuser_fieldsには複数の型の値があります。

プロパティの種類をObjectに変更しました。

最後に、どちらの場合でも解析され、正常にキャストされます。 解析した後は、それがArrayListクラスかそれとも別のクラスかをチェックします。

ありがとうございました。

関連する問題