使用Gson将Json对象解析为Json数组 [英] Parsing Json Object to Json Array using Gson
问题描述
{
discussion:[{
id:54,
name:Test Discusssion,
讨论:41,
创建:1472816138,
modified :1472816138,
subject:Test Discusssion,
message:< p>欢迎所有人参加测试讨论< \ / p>,
}],
warnings:[]
}
但是我在解析它as
ArrayList< MoodleDiscussion> mDiscussions = gson.fromJson(阅读器,
新TypeToken< List< MoodleDiscussion>>(){
} .getType());
我得到的错误是
java.lang.IllegalStateException:预期的BEGIN_ARRAY,但是BEGIN_OBJECT
我想将接收到的json转换为数组, p>
以下是MoodleDiscussion类
public class MoodleDiscussion extends SugarRecord< Moodle讨论> {@
SerializedName(id)int discussionid; @
SerializedName(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>讨论;
私人列表< Object>警告;
公开列表< MoodleDiscussion> getDiscussions(){
返回讨论;
}
public List< Object> getWarnings(){
返回警告;
}
}
然后您应该可以像这样读取它:
MoodleDiscussionResponse response = gson.fromJson(reader,MoodleDiscussionResponse.class);
列表< MoodleDiscussion> mDiscussions = response.getDiscussions();
I am calling a webservice which gives me a json like this
{
"discussions": [{
"id": 54,
"name": "Test Discusssion",
"discussion": 41,
"created": 1472816138,
"modified": 1472816138,
"subject": "Test Discusssion",
"message": "<p>Welcome all to test discussion<\/p>",
}],
"warnings": []
}
But in android I am parsing it as
ArrayList<MoodleDiscussion> mDiscussions = gson.fromJson(reader,
new TypeToken<List<MoodleDiscussion>>() {
}.getType());
And the error I am getting is
java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT
I want to convert the received json into an array how should I ?
Here is the MoodleDiscussion class
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;
}
}
The list you're trying to parse is contained within a nested json data structure that also needs to be represented in java classes if Gson is to parse it correctly.
You'll need a container class that looks something like this:
public class MoodleDiscussionResponse {
private List<MoodleDiscussion> discussions;
private List<Object> warnings;
public List<MoodleDiscussion> getDiscussions() {
return discussions;
}
public List<Object> getWarnings() {
return warnings;
}
}
Then you should be able to read it like so:
MoodleDiscussionResponse response = gson.fromJson(reader, MoodleDiscussionResponse.class);
List<MoodleDiscussion> mDiscussions = response.getDiscussions();
这篇关于使用Gson将Json对象解析为Json数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!