我需要为执行以下操作的类编写自定义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; ,因为我想知道答案不仅要解决问题,还要提高我对杰克逊的知识