Десериализация ответа JSON с GSON с использованием Java - PullRequest
5 голосов
/ 11 марта 2012

Я пытаюсь проанализировать следующий ответ JSON с GSON:

{
  "total": 15,
  "page": 2,
  "pagesize": 10,
  "rep_changes": [
    {
      "user_id": 2341,
      "post_id": 2952530,
      "post_type": "question",
      "title": "unprotected access to member in property get",
      "positive_rep": 5,
      "negative_rep": 0,
      "on_date": 1275419872
    },
   {
      "user_id": 2341,
      "post_id": 562948,
      "post_type": "question",
      "title": "Do you have any recommendations on Blend/XAML books/tutorials for designers?",
      "positive_rep": 20,
      "negative_rep": 0,
      "on_date": 1270760339
    }
  ....
}

Это два класса, которые я определил (каждый класс содержит соответствующие методы получения и установки):

public class Reputation {
    private int total;
    private int page;
    private int pagesize;
    private List<RepChanges> rep_changes;

public class RepChanges {
    private int user_id;
    private int post_id;
    private String post_type;
    private String title;
    private int positive_rep;
    private int negative_rep;
    private long on_date;

Мне не удалось проанализировать класс RepChanges в атрибуте rep_changes в классе Reputation. Есть мысли?

Примечание: мне удалось проанализировать итоговый размер, страницу и размер страницы (это не сложные атрибуты). Вот что я сделал:

Для разбора итога, страницы и размера страницы я использовал (и работал нормально):

Gson gson = new Gson();
Reputation rep = gson.fromJson(jsonText, Reputation.class);

//doing this works:
int page = rep.getPage();
System.out.println(page);

Однако при выполнении:

List<RepChanges> rep_changes = rep.getRep_changes();
for(RepChanges r : rep_changes){
    System.out.println(r.toString());
}

Я (технически) не получаю сообщение об ошибке, но следующее (которое выглядит как область памяти):

stackoverflow.objects.RepChanges@116bb691

1 Ответ

3 голосов
/ 11 марта 2012

В своем классе Repchanges настройте свой собственный метод toString(), подобный следующему:

public String toString ()
{
    return "RepChanges [user_id=" + user_id + 
            ", post_id=" + post_id + 
            ", post_type=" + post_type + 
            ", title=" + title + 
            ", positive_rep=" + positive_rep + 
            ", negative_rep=" + negative_rep + 
            ", on_date=" + on_date + "]";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...