Java 关于使用Gson反序列化Json的问题
嗨,我如何反序列化该类型的json对象Java 关于使用Gson反序列化Json的问题,java,json,gson,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 = gs
{"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"}
有什么想法吗
谢谢您的json结构无效。你需要把它改成
{"id":5, "url":"http://pics.com/pic1.jpg"}
来匹配你的摄影课
为什么
{“photo”:{“id”:5,“url”:http://pics.com/pic1.jpg“}
不起作用的原因是GSON在photo类中查找一个名为photo
的属性,该属性不存在。创建另一个将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();
关于我很欣赏这个答案,但在我看来,Gson有(或者无论如何应该有)一种方法来映射json字段如何映射到对象……通常情况下,我们无法更改API。此外,约定似乎是将所有对象包装在一个命名的JSON对象中。我宁愿我们的图书馆遵守这些惯例,而不是相反。