【发布时间】:2016-03-08 13:43:52
【问题描述】:
我有一个嵌套对象,我无法用 gson 对其进行序列化。我制作了一个自定义序列化程序,它与父对象一起使用,但与子对象一起使用,我无法让它工作。
所以在我下面的代码中,自定义序列化程序用于序列化Team。这样可行。在这个团队中,我有一个User 列表,我也想对其进行序列化。不幸的是,addProperty(String a, String b) 方法需要 2 个字符串(或一个原语),因此我无法添加属于 User 类的属性成员。
这里是代码,首先我创建一个Gson对象并为Team注册自定义序列化器:
gson = new GsonBuilder().registerTypeAdapter(Team.class, new TeamSerializer())
.create();
gson.toJson(userData); // UserData instance.
这是要用Gson对象序列化的类(我省略了用//...表示的无关字段):
public class UserData{
public Team team;
//...
}
这是自定义序列化程序,我无法在其中添加属性 members:
public class TeamSerializer implements JsonSerializer<Team>{
@Override
public JsonElement serialize(Team src, Type type, JsonSerializationContext context) {
JsonObject object = new JsonObject();
object.addProperty("id", src.getIdteams());
object.addProperty("name", src.getName());
object.addProperty("tag", src.getTag());
object.addProperty("picture", src.getProfilePic());
//object.addProperty("members", src.getMembers());
return object;
}
}
这是Team 类:
public class Team implements Serializable {
private long idteams;
private String name;
private String tag;
private String profilePic;
private List<User> members;
//...
}
【问题讨论】: