如何从自定义Gson JsonSerializer调用另一个序列化程序?

时间:2011-05-18 20:52:17

标签: java json serialization gson jsonserializer

我有自定义课程User

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

我现在正在为User.class创建一个自定义的JsonSerializer:

@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 个答案:

答案 0 :(得分:13)

obj.add("created", context.serialize(src.created));

如果您的TimestampAdapter已在Gson注册了Timestamp课程,JsonSerializationContext应自动使用它来序列化对象并返回JsonElement