我有一个JSON字符串,如下所示:
Relationship
然后由于某种原因,必须更新到新结构,预期的传入JSON字符串变为:
{
...
"token": "abc123"
...
}
最初,令牌字段是字符串类型,现在,它变成了一个具有附加属性的对象。
我需要处理这两种格式以实现向后兼容,jackson可以处理这种情况吗?
答案 0 :(得分:0)
您可以通过创建自己的反序列化器来完成此操作:
class FooJsonDeserializer extends JsonDeserializer<Foo> {
@Override
public Foo deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
Foo foo = new Foo();
//deserialize your data here
return foo;
}
}
不要忘记将解串器添加到您的班级
@JsonDeserialize(using = FooJsonDeserializer.class)
class Foo {
...
}
答案 1 :(得分:0)
您可以使用token
注释@JsonDeserialize(using=YourCustomDeserializer.class)
setter,并仅为一个字段反序列化提供逻辑。
答案 2 :(得分:0)
您可以使用我编写的Jackson模块来处理版本控制。有关如何使用它的信息,请参阅自述文件中的示例。
https://github.com/jonpeterson/jackson-module-model-versioning