2016-12-29 208 views
1

所有人。 我有一種情況,當我從服務器接收的對象可以有多種類型。它可能是一個空的ArrayList或一些帶有填充值的Object類型,取決於不同的情況。Android GSON轉換錯誤 - 預計BEGIN_OBJECT,但是BEGIN_ARRAY

這就是爲什麼我得到一個錯誤GSON

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的類還是其他類。

謝謝大家。

相關問題