这是我第一次在经过3年的计算机科学之后在这里提出一个问题,对我来说是如此。
我想使用Gson将我的JSON反序列化为对象。 我已经定义了适当的类,其中一些类的对象包含在其他对象中。 当我试图反序列化整个JSON时,我得到了空值,所以我开始将它分开。
我达到了所有下层阶级都支持自己的程度,但是当我试图反序列化为一个包含该较小对象实例的对象时 - 每个东西都返回null。
我的部分JSON:
{
"user_profile": {
"pk": 1,
"model": "vcb.userprofile",
"fields": {
"photo": "images/users/Screen_Shot_2013-03-18_at_5.24.13_PM.png",
"facebook_url": "https://google.com/facebook",
"site_name": "simple food",
"user": {
"pk": 1,
"model": "auth.user",
"fields": {
"first_name": "blue",
"last_name": "bla"
}
},
"site_url": "https://google.com/"
}
}
}
UserProfile类:
public class UserProfile {
private int pk;
private String model;
private UPfields fields = new UPfields();//i tried with and without the "new"
}
UPfields课程:
public class UPfields {
private String photo;
private String facebook_url;
private String site_name;
private User user;
private String site_url;
}
用户类:
public class User {
private int pk;
private String model;
private Ufields fields;
}
Ufields课程:
public class Ufields {
private String first_name;
private String last_name;
}
在我的主要内容中,我打电话:
Gson gson = new Gson();
UserProfile temp = gson.fromJson(json, UserProfile.class);
所以我的临时对象只包含空值。 我已经尝试将类更改为静态,但它不起作用。 UPfields对象和所有较低的对象都能正常工作。
有什么建议吗? 当我删除
“{ “用户资料”:” 并且它是结束括号,对user_profile对象的反序列化工作。
答案 0 :(得分:2)
为了解析这个json
示例,您必须创建辅助类,其中包含user_profile
类型的UserProfile
字段:
public class UserProfileWrapper {
private UserProfile user_profile;
}
并使用此类解析此json
字符串:
UserProfileWrapper temp = gson.fromJson(json, UserProfileWrapper.class);
答案 1 :(得分:0)
Gson首先解析最外面的对象,在你的例子中有一个字段user_profile
。您的UserProfile
类没有user_profile
字段,因此无法将其反序列化为该类的实例。您应该尝试反序列化user_profile
字段的值。