1
나는 this json을 파싱하고 POJO를 생성하려고합니다. 온라인 문서는 나 혼란 스럽다. 같은 유형의 객체가 많이 발생한다는 사실을 잘못 처리하고있는 것 같습니다. 배열이 필요합니까? 그게 어떻게 생겼어?자바에서 gson으로 json을 파싱하기
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 at ..."오류가 발생합니다. – cafman
왜냐하면 그 속성 값이 객체이어야 할 때 'String'이라는 것을 잘못 지정했기 때문입니다. Gson은 문자열 (예 :'''로 시작하는 문자열)을 보지 않고 객체의 시작을 봅니다 (즉'{')가 표시됩니다.) –
알겠습니다. – cafman