如何从该类的自定义序列化程序中调用类的默认Jackson序列化程序?

时间:2017-07-25 20:38:40

标签: java json serialization jackson

我需要为执行以下操作的类编写自定义Jackson JSON序列化程序:

  • 如果对象isCustomJSON(),则应将其编码为字符串" CUSTOM" (显然,假设对象的类具有布尔isCustomJSON()方法)
  • 如果对象不是isCustomJSON(),则应使用默认的Jackson JSON序列化程序对其进行编码,如果它没有注册的自定义序列化程序,则应使用该类。

我猜测代码看起来像这样:

public class ItemSerializer extends StdSerializer<Item> { // Add boilerplate
    @Override
    public void serialize (
        Item value, JsonGenerator jgen, SerializerProvider provider) { // add throws
        if (value.isCustomJSON()) {
            jgen.writeString("CUSTOM");
        } else {
            jgen.NeedToWriteStandardEncodedJSONSerialization(value);
            // PROFIT??? 
        }
    }
}

如何实施jgen.NeedToWriteStandardEncodedJSONSerialization(value);件?

旁注:为了防止我遇到XY问题,执行这个奇怪逻辑的原因是我需要在我的代码中添加对旧API的支持,这需要不同的JSON编码。由于服务器中的类重组,我的类结构当前提供的默认值(旧代码无法更改为包含新的类结构)。我的方法是:1。检测旧的API请求; 2.通过isCustomJSON()将数据标记为数据中的旧API,并编写自定义Jackson JSON序列化程序,输出旧API可以理解的JSON;让新API的请求使用该类的默认普通JSON序列化程序默认值。即使是X-Y问题;请把你的答案集中在&#34;如何在技术上实现你所要求的&#34; ,因为我想知道答案不仅要解决问题,还要提高我对杰克逊的知识

0 个答案:

没有答案