带有版本控制的 json 数据存储

2024-04-25

问题定义:

有一个Java服务器存储JSON可以映射到 Java 类的数据。 Java 类可能会发生变化。目标是能够更新 Java 类并且仍然能够解码JSON旧版本的数据到新版本的 Java 对象。应该有一个良好的版本控制系统。例如,能够向 Java 类添加具有默认值的新字段。在旧的情况下JSONdata没有这个字段,Java对象可以使用该字段的默认值。

问题:

  • 我见过GSON, but 版本控制支持 https://sites.google.com/site/gson/gson-user-guide#TOC-Versioning-Support太有限了。

我错过了什么?是否有其他库具有更好的版本控制支持?

  • 应该如何存储它JSON data?

我看到两个选择。选项 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(使用前将#替换为@)

带有版本控制的 json 数据存储 的相关文章

随机推荐

  • 请参阅在 JSDoc 中键入不同的文件而不导入

    我正在 Visual Studio Code 中编写 JavaScript ES6 代码 并启用 VSCode 的类型检查 如VSCode 文档 https code visualstudio com docs languages java
  • displayformatattribute 自定义字符串格式

    我希望能够将视图模型中的属性标记为在 MVC 视图中显示时使用自定义格式进行格式化 我假设我需要自己的显示格式属性并设置显示格式 但我不确定如何设置此显示格式或在哪里设置 如果我想将数字显示为货币 很简单 只需在属性的构造函数中将 Data
  • 无法为 api 路由 laravel 设置 cookie

    使用后端 laravel 和前端 SPA vue js vue cli 3 进行服务 我需要通过 httpOnly cookie 不是 localStorage 进行身份验证 我用tymondesigns jwt auth https gi
  • 如何在主题激活时填充侧边栏上的小部件

    我想做的是在主题激活时使用一些默认小部件预先填充侧边栏小部件区域 if dynamic sidebar sidebar 确实添加了小部件 但它没有显示在小部件部分的侧栏中 并且 if is active sidebar sidebar 如果
  • Symfony2 中的 getEntityManager() 和 getDoctrine()

    这两种说法有什么区别吗 this gt getDoctrine gt getEntityManager gt getRepository this gt getDoctrine gt getRepository 这种差异是否与我遗漏的任何
  • 如何比较 Visual Studio Code 中的不同分支

    如何比较 Visual Studio Code 中的两个不同分支 是否可以 2021年答案 这是分步指南 安装GitLens扩大 GitLens https marketplace visualstudio com items itemNa
  • jScrollPane滚动条问题

    我正在开发一个使用 Wordpress 作为 CMS 的网站 并且我想在我的网站的 div 内使用自定义滚动条 我一直在尝试使用 jScrollPane 插件 但无法使其正常工作 主要代码在我的 header php 文件中 并且有一个类
  • 编辑文档Python-docx标题中的内容

    我正在尝试查找并替换其中的文本标题中的文本框的文档 但搜索了一段时间后 似乎无法通过 python docx 访问标题或 浮动 文本框中的内容 我读了问题here https github com python openxml python
  • 我应该在我的活动中缓存来自 SharedPreferences 的数据吗?

    我正在开发一个基于 GCM 的应用程序 用户可以在其中订阅多个主题 我需要知道用户在两个地方订阅了哪些主题 主要活动 展示Subscribe or Unsubscribe用户界面中的按钮 GCM 侦听器服务 通过以下方式过滤消息并处理 过时
  • 无法在 _app.js 中使用 getStaticProps

    我正在使用 next js 并尝试执行以下操作 获取 app js中与用户数据相关的基本数据 该数据包括标题 用于导航栏 和一些社交链接 用于页脚 在构建时将该数据传递给其他组件 例如页脚和导航栏 用于静态站点生成 为此我已经导出了getS
  • 使用监视器的单车道桥

    在大学里 我从 Gregory R Andrews Foundations of Multithreaded programming 中得到了这个规范的并行编程问题 虽然我有这本书的较新版本和俄语版本 但我发现了一个旧的英语变体并尝试正确传
  • 没有 fflush(stdout) 则输出不打印

    我不明白为什么有时我需要使用fflush 有时不是 我的程序目前出现段错误 我正在使用 print 语句对其进行调试 当程序出现段错误时 stdout不自动刷新缓冲区 我不明白为什么有时需要使用 fflush 而有时需要使用 不是 有时 s
  • 为什么我不能在类方法中使用预定义变量?

    我尝试在类方法中使用预定义变量 例如 PSVersionTable 或 PSScriptRoot 他们失败并显示错误消息 方法中未分配变量 Example Class Foo String Version GetVersion If PSV
  • Git:更改不应该保留在其分支内吗?

    我对使用 Git 还比较陌生 这是我到目前为止所做的 git branch master git status On branch master nothing to commit working directory clean git b
  • ffmpeg 使用 -movflags faststart

    我尝试使用命令 movflags 快速启动 并得到以下错误 Microsoft Windows 版本 6 0 6002 版权所有 c 2006 Microsoft 公司 版权所有 C uploads 1 videos gt ffmpeg i
  • MATLAB 颜色条刻度标记错误?

    我正在绘制 9 个子图 如下图所示 其中一个颜色条代表三个子图 在这里我想将颜色条中的最高值显示为 gt value 令人惊讶的是 当我手动将刻度标签编辑为h TickLabels end gt h TickLabels end 颜色条开始
  • 哪种架构称为非均匀内存访问(NUMA)?

    根据wiki http en wikipedia org wiki Non uniform memory access 非均匀内存访问 NUMA 是一种用于多处理的计算机内存设计 其中内存访问时间取决于相对于处理器的内存位置 但尚不清楚它是
  • 处理数据表中的会话超时(使用服务器端数据源处理)

    我有一个由服务器端 Ajax 数据源支持的数据表表单 它在后端使用 struts 操作来处理请求 获取数据并发送 JSON 响应 服务器端操作需要在身份验证模式下运行 即需要有一个活动会话 处理数据表中会话超时错误的最佳方法是什么 目前它只
  • 用渐变色绘制一个 D3 圆

    如何用渐变颜色画一个圆 比如说 从黄色到蓝色的渐变 通常 要创建黄色圆圈 我们可以使用以下代码 var cdata 50 40 var xscale 40 var xspace 50 var yscale 70 var svg d3 sel
  • 带有版本控制的 json 数据存储

    问题定义 有一个Java服务器存储JSON可以映射到 Java 类的数据 Java 类可能会发生变化 目标是能够更新 Java 类并且仍然能够解码JSON旧版本的数据到新版本的 Java 对象 应该有一个良好的版本控制系统 例如 能够向 J