问题定义:
有一个Java服务器存储JSON
可以映射到 Java 类的数据。 Java 类可能会发生变化。目标是能够更新 Java 类并且仍然能够解码JSON
旧版本的数据到新版本的 Java 对象。应该有一个良好的版本控制系统。例如,能够向 Java 类添加具有默认值的新字段。在旧的情况下JSON
data没有这个字段,Java对象可以使用该字段的默认值。
问题:
- 我见过
GSON
, but 版本控制支持 https://sites.google.com/site/gson/gson-user-guide#TOC-Versioning-Support太有限了。
我错过了什么?是否有其他库具有更好的版本控制支持?
我看到两个选择。选项 1:我可以存储这些JSON
文件(如果版本相同,则具有共同的结构)分别放在一个文件夹中。例如我有 2 个文件:json/j1.json 和 json/j2.json。选项 2:我可以使用NoSQL
数据库如MongoDB
。但这比之前的选择有优势吗?要求一个是没有意义的BasicDBObject
in a DBCollection
因为我需要它能够将其转换为另一个 Java 类。对于这种情况,建议使用哪种选项?也许另一种选择更适合?
在撰写本文时 (2.9.x),还没有内置的 Jackson 支持,但是,Jackson 模型版本控制模块 https://github.com/jonpeterson/jackson-module-model-versioning添加版本控制支持,可用于在映射到 POJO 之前将旧版本的 JSON 模型转换为当前版本(反之亦然)。
请参阅我的回答Jackson 2 对版本控制的支持 https://stackoverflow.com/a/39083992/1073826有关如何将 GSON 的基本版本控制功能映射到此模块的示例。请参阅模块的 GitHub 页面 https://github.com/jonpeterson/jackson-module-model-versioning有关完整功能的示例。
免责声明:我是该模块的作者。我也写过一篇Spring MVC ResponseBodyAdvise https://github.com/jonpeterson/spring-webmvc-model-versioning用于使用该模块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)