Вопрос о десериализации Json с использованием Gson - PullRequest
4 голосов
/ 28 февраля 2011

Привет, как я могу десериализовать объекты типа json?

 {"photo":{"id":5, "url":"http://pics.com/pic1.jpg"}};

Потому что обычно я создал бы класс:

public class Photo{
  private int id;
  private String url;

  public Photo(){
   }    
}

А затем просто запустите его, используя:

  GsonBuilder gsonb = new GsonBuilder();
  Gson gson = gsonb.create();      
  Photo photo = gson.fromJson(response, Photo.class);

Но это просто наполняет все нулями. Это сработало бы, если бы Json был только

 {"id":5, "url":"http://pics.com/pic1.jpg"}

Есть идеи?

Спасибо

Ответы [ 2 ]

3 голосов
/ 28 февраля 2011

Создайте еще один класс с классом Photo в качестве свойства

public class PhotoRoot {

  private Photo photo;

  public void setPhoto(Photo val) {
    photo = val;
  }

  public Photo getPhoto() {
    return photo;
  }

}

Тогда разбери его как

GsonBuilder gsonb = new GsonBuilder();
Gson gson = gsonb.create();      
PhotoRoot photoRoot = gson.fromJson(response, PhotoRoot.class);

Photo yourPhoto = photoRoot.getPhoto();

Привет

0 голосов
/ 28 февраля 2011

Ваша структура JSON недействительна.Вам нужно изменить его на

 {"id":5, "url":"http://pics.com/pic1.jpg"}

в соответствии с вашим классом Фото.

Причина, по которой {"photo":{"id":5, "url":"http://pics.com/pic1.jpg"}} не работает, заключается в том, что GSON ищет свойство под названием photo в вашемКласс фотографий, которого нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...