【问题标题】:How to invoke another serializer from a custom Gson JsonSerializer?如何从自定义 Gson JsonSerializer 调用另一个序列化程序?
【发布时间】:2011-08-28 09:30:40
【问题描述】:

我有我的自定义课程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 中的“已创建”字段?

【问题讨论】:

    标签: java json serialization gson jsonserializer


    【解决方案1】:
    obj.add("created", context.serialize(src.created));
    

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

    【讨论】:

      猜你喜欢
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2013-03-09
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      相关资源
      最近更新 更多