gpt4 book ai didi

java - 使用 Gson 将 Json 对象解析为 Json 数组

转载 作者:行者123 更新时间:2023-11-30 01:01:15 24 4
gpt4 key购买 nike

我正在调用一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com