【发布时间】:2021-08-11 15:13:25
【问题描述】:
假设我使用库中的架构(不属于我)
class OldClass {
int id;
string name;
}
序列化的 JSON "SerJsonStr" 想要
{"id": 12, "name": "Bob"}
现在我可以使用“OldClass”模式和上面的示例 json 将 json 反序列化为 scala 对象
OldClass obj = new ObjectMapper().readValue[OldClass](SerJsonStr)
但是,假设库将架构(通过更改字段名称)更新为
class OldClass {
int id;
string **fullName**;
}
现在,为了向后兼容,反序列化会将 fullName 设置为 null。请注意,“OldClass”是不属于我的第三方库的一部分
有没有办法明确指定 Map["name" -> "full name"] 然后
customizedFieldNameChange["name"] = "fullName"
OldClass obj = new ObjectMapper().readValue[OldClass]({"id": 12, "name": "Bob"}, customizedFieldNameChange)
会将 fullName 设置为“Bob”(即,它将在“obj”上为 json 字符串中的“name”字段调用 setFullName())?
【问题讨论】:
标签: json scala serialization jackson backwards-compatibility