1
我有一個嵌套的對象,我無法用gson序列化。我做了一個自定義的序列化器,它與父對象一起使用,但與我沒有設法使其工作的子對象一起使用。gson嵌套自定義序列化器
所以在我的代碼下面的自定義序列化器被用來序列化一個Team
。這樣可行。在這個團隊中,我有一個我想要序列化的User
列表。不幸的是,方法addProperty(String a, String b)
需要2個字符串(或一個原語),所以我不能添加屬於User
類的屬性成員。
下面是代碼,第一I創建Gson
對象並註冊Team
的自定義序列:
gson = new GsonBuilder().registerTypeAdapter(Team.class, new TeamSerializer())
.create();
gson.toJson(userData); // UserData instance.
這是會被與Gson
對象序列化的類(I省略用符號無關的字段// ...):
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;
//...
}
我剛剛試過這個,編譯器說這是不可能在List和TypeToken上調用serialize()。它應該只是列表的列表和Type類型的類型,而不是TypeToken ...你有沒有可能知道爲什麼? – mashaned