我正在调用一个 web 服务,它给我一个像这样的 json
{
"discussions": [{
"id": 54,
"name": "Test Discusssion",
"discussion": 41,
"created": 1472816138,
"modified": 1472816138,
"subject": "Test Discusssion",
"message": "<p>Welcome all to test discussion<\/p>",
}],
"warnings": []
}
但在android中我将其解析为
ArrayList<MoodleDiscussion> mDiscussions = gson.fromJson(reader,
new TypeToken<List<MoodleDiscussion>>() {
}.getType());
我得到的错误是
java.lang.IllegalStateException:应为 BEGIN_ARRAY 但为 BEGIN_OBJECT
我想把接收到的json转成数组,应该怎么办?
这是 MoodleDiscussion 类
public class MoodleDiscussion extends SugarRecord < MoodleDiscussion > {@
SerializedName("id") int discussionid;@
SerializedName("name") String name;@
SerializedName("subject") String subject;
public int getDiscussionid() {
return discussionid;
}
public String getName() {
return name;
}
public int getUserid() {
return userid;
}
public String getSubject() {
return subject;
}
}
最佳答案
您尝试解析的列表包含在一个嵌套的 json 数据结构中,如果 Gson 要正确解析它,该数据结构也需要在 java 类中表示。
你需要一个看起来像这样的容器类:
public class MoodleDiscussionResponse {
private List<MoodleDiscussion> discussions;
private List<Object> warnings;
public List<MoodleDiscussion> getDiscussions() {
return discussions;
}
public List<Object> getWarnings() {
return warnings;
}
}
那么你应该能够像这样阅读它:
MoodleDiscussionResponse response = gson.fromJson(reader, MoodleDiscussionResponse.class);
List<MoodleDiscussion> mDiscussions = response.getDiscussions();
关于java - 使用 Gson 将 Json 对象解析为 Json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39361159/