Как вызвать другой сериализатор из пользовательского Gson JsonSerializer? - PullRequest
13 голосов
/ 19 мая 2011

У меня есть свой собственный класс User:

class User {
    public String name;
    public int id;
    public Address address;
    public Timestamp created;
}

Я сейчас создаю собственный JsonSerializer для User.class:

@Override
public JsonElement serialize(User src, Type typeOfSrc,
        JsonSerializationContext context) {
    JsonObject obj = new JsonObject();
    obj.addProperty("name", src.name);
    obj.addProperty("id", src.id);
    obj.addProperty("address", src.address.id);

    // Want to invoke another JsonSerializer (TimestampAdapter) for Timestamp   
    obj.add("created", ???);
    return obj;
}

Но у меня уже есть TimestampAdapter что я использую для Timestamp.class.Как я могу вызвать этот JsonSerializer для использования в «созданном» -поле в User.class?

1 Ответ

13 голосов
/ 19 мая 2011
obj.add("created", context.serialize(src.created));

Если ваш TimestampAdapter зарегистрирован в Gson для класса Timestamp, JsonSerializationContext должен автоматически использовать его для сериализации объекта и возврата JsonElement.

...