1
我试图解析this json并从中创建一个POJO。在线文档让我感到困惑。我怀疑我错误地处理了同一类型的对象有许多不同的事件。我需要一个数组吗?那将是什么样子?这里是我的班至今:用java解析json与gson
public class StoryGSONClass {
private Response kind;
public static class Response {
private String Listing;
private Data data;
}
public static class Data {
private String modhash;
private Children children;
private String after;
private String before;
}
public static class Children {
private String childKind;
private ChildData childData;
}
public static class ChildData {
private String domain;
private String banned_by;
private String media_embed;
private String subreddit;
private String selftext_html;
private String selftext;
private String likes;
private String link_flair_text;
private String id;
private String clicked;
private String title;
private String num_comments;
private String score;
private String approved_by;
private String over_18;
private String hidden;
private String thumbnail;
private String subreddit_id;
private String edited;
private String link_flair_css_class;
private String author_flair_css_class;
private String downs;
private String saved;
private String is_self;
private String permalink;
private String name;
private String created;
private String url;
private String author_flair_text;
private String author;
private String created_utc;
private String media;
private String num_reports;
private String ups;
}
}
其次
Gson gson = new Gson();
StoryGSONClass target2 = gson.fromJson(objectName, StoryGSONClass.class);
编辑:这里是类的最新版本:
public class Response {
private String kind;
private ResponseData data;
public static class ResponseData {
private String modhash;
private List<ResponseChildData> children;
private String after;
private String before;
}
public static class ResponseChildData {
private String kind;
private ChildData data;
}
public static class ChildData {
private String domain;
private String banned_by;
private Object media_embed;
private String subreddit;
private String selftext_html;
private String selftext;
private String likes;
private String link_flair_text;
private String id;
private boolean clicked;
private String title;
private int num_comments;
private int score;
private String approved_by;
private boolean over_18;
private boolean hidden;
private String thumbnail;
private String subreddit_id;
private boolean edited;
private boolean link_flair_css_class;
private boolean author_flair_css_class;
private int downs;
private boolean saved;
private boolean is_self;
private String permalink;
private String name;
private String created;
private String url;
private String author_flair_text;
private String author;
private String created_utc;
private String media;
private String num_reports;
private int ups;
}
}
我已经更新了课程。当孩子返回空时,一切都很好,我可以访问像data.modhash的东西。但是当孩子回来非空时,我得到一个“java.lang.IllegalStateException:期望一个字符串,但是BEGIN_OBJECT在......”错误。 – cafman
这是因为您错误地指定了该属性的值应该是对象时的“String”。 Gson没有看到一个字符串(即以'“开头的东西),而是看到了一个对象的开始(即它看到一个'{')。 –
明白了。谢谢。 – cafman