关于使用Gson反序列化Json的问题

时间:2011-02-28 11:59:38

标签: java json gson

您如何反序列化该类型的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 个答案:

答案 0 :(得分:3)

创建另一个将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();

此致

答案 1 :(得分:0)

您的json结构无效。您需要将其更改为

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

匹配您的Photo类。

{"photo":{"id":5, "url":"http://pics.com/pic1.jpg"}}不起作用的原因是GSON在Photo类中查找了一个名为photo的属性,该属性不存在。