我有一个可以输出以下任何内容的类:
- {标题:“我的主张”}
- {标题:“我的主张”,判断:空}
- {标题:“我的主张”,判断:“站立”}
(注意每种情况下的判断是如何不同的:它可以是未定义的、null 或一个值)
该类看起来像:
class Claim {
String title;
Nullable<String> judgment;
}
Nullable 是这样的:
class Nullable<T> {
public T value;
}
使用自定义序列化程序:
SimpleModule module = new SimpleModule("NullableSerMod", Version.unknownVersion());
module.addSerializer(Nullable.class, new JsonSerializer<Nullable>() {
@Override
public void serialize(Nullable arg0, JsonGenerator arg1, SerializerProvider arg2) throws IOException, JsonProcessingException {
if (arg0 == null)
return;
arg1.writeObject(arg0.value);
}
});
outputMapper.registerModule(module);
摘要:此设置允许我输出值、null或 undefined。
现在,我的问题是:如何编写相应的反序列化器?
我想它看起来像这样:
SimpleModule module = new SimpleModule("NullableDeserMod", Version.unknownVersion());
module.addDeserializer(Nullable.class, new JsonDeserializer<Nullable<?>>() {
@Override
public Nullable<?> deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
if (next thing is null)
return new Nullable(null);
else
return new Nullable(parser.readValueAs(inner type));
}
});
但我不知道“下一件事情是空的”或“内部类型”该放什么。
关于如何做到这一点的任何想法?
谢谢!