【发布时间】:2012-07-26 09:38:36
【问题描述】:
可能重复:
GSON throwing “Expected BEGIN_OBJECT but was BEGIN_ARRAY”?
场景:我正在使用 GSON 库解析一个 JSON 格式的 API。这是我正在解析的 JSON 文件:
{
"questions": [
{
"question_1": "Question 1",
"options": [
"option_1 : option1",
"option_2 : option2",
"option_3 : option 3",
"option_4 : option 4"
]
},
{
"question_2": "Question 2",
"options": [
"option_1 : option 1",
"option_2 : option 2",
"option_3 : option 3"
]
}
]
}
我的对象类看起来像这样:
public class Practise_Question_Object {
public List<Questions> questions;
public class Questions {
@SerializedName("question")
public String Question;
public List<Options> options;
public class Options {
public String Option_1;
public String Option_2;
public String Option_3;
public String Option_4;
}
}
问题
我的问题是,每当我尝试解析值时,它都会显示错误java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 53
如果我将“选项”从 Array 更改为 Object,那么我可以轻松解析。但在我的项目中(从 PHP 端)我不能使用 Object。
【问题讨论】:
-
你想把这个json传给服务器吗?
-
不,我想从服务器解析这个 JSON。
-
在PHP中,关联数组被编码为JSON中的对象……你不能使用关联数组吗? (无论如何,PHP 中只有一种类型的数组)。为您的数据创建一个适当的表示,看来您无论如何都不想要一个数组。
-
@QVDev :我的问题不一样。
-
我对 GSON 不太熟悉,但是您的 Java 类似乎与您的 JSON 不匹配。你告诉 GSON
options是一个Options对象数组,其中每个Option有 4 个字符串属性。但事实并非如此,options是一个由 4 个字符串组成的数组。不过我可能完全错了......
标签: android json gson android-parser