2016-12-29 111 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的类还是其他类。

谢谢大家。

相关问题