gson nested custom serializer

Viewed 1704

I've a nested object that I cannot manage to serialize with gson. I made a custom serializer which is used with the parent object but with the child one I didn't manage to make it work.

So in my code below the custom serializer is used to serialize a Team. That works. In this team I have a list of User that I want to serialize as well. Unfortunately the method addProperty(String a, String b) askes for 2 strings (or a primitive) so I cannot add a property members which is of the class User.

Here is the code, first I create a Gson object and register the custom serializer for Team:

gson = new GsonBuilder().registerTypeAdapter(Team.class, new TeamSerializer())
            .create();
 gson.toJson(userData); // UserData instance.

This is the class that is gonna be serialized with the Gson object (I omitted irrelevant fields symbolized by //...):

public class UserData{
    public Team team;
    //...
}

This is the custom serializer where I cannot add the property 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;
    }
}

This is the Team class:

public class Team implements Serializable {
    private long idteams;
    private String name;
    private String tag;
    private String profilePic;
    private List<User> members;
    //...
}
1 Answers
Related