json文件格式的升级路径

2024-05-22

我们将 Java 应用程序的用户首选项存储在 JSON 文件中,使用Jackson http://jackson.codehaus.org/。随着我们继续开发该应用程序,我们将添加首选项、重命名首选项并删除过时的首选项。当用户将应用程序升级到下一个版本时,文件格式可能会发生变化。这会导致 Jackson 抛出异常,并且即使格式 90% 相同,也无法解析文件。我应该如何处理升级文件格式?

我正在考虑使用JSONT http://goessner.net/articles/jsont/升级文件并编写我自己的 Jackson 流解析器,该解析器比完整绑定解析器更宽松,以防 JSONT 升级出现问题。其他人做了什么来处理升级文件格式?


Jackson 目前没有任何内置的 JSON 版本控制支持,例如Gson 确实 http://sites.google.com/site/gson/gson-user-guide#TOC-Versioning-Support. 杰克逊第108期 http://jira.codehaus.org/browse/JACKSON-108两年多前就已记录,以解决此类可能的增强问题。请毫不犹豫地投票支持其实施。 (我已经做了。)

我将采取的方法是实现自定义 JSON 版本控制支持解决方案,类似于 Gson 的做法。 (仅这一功能可能不足以让我切换到 Gson。)然后,在处理反序列化后或自定义反序列化期间的不同版本时,Java bean 处理中的逻辑可能相对简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

json文件格式的升级路径 的相关文章

随机推荐

  • 如何使用 RSpec 测试 javascript 重定向?

    我正在使用 xhr post 与控制器交互 并且我期待重定向 在 js erb 中 我有 window location href address 手动测试 浏览器会正确重定向 我如何使用 RSpec 测试它 response should
  • 如何记录所有抛出的异常?

    如何记录抛出和捕获的任何异常 就像 Visual Studio 的 IntelliTrace 所做的那样 或者有没有办法将 InteliTrace 集成到应用程序的调试版本中 然后查看其日志 Update 我会稍微澄清一下 我想要标准 tx
  • 如何设置Codeigniter上传库在本地机器的上传路径?

    我将以下路径设置为 Codeigniter 附带的上传库的 upload path this gt upload config upload path uploads working 该路径在远程服务器上运行良好 但是 当我在本地调试时 它
  • Maven 插件前缀解析如何工作?为什么它解决了“findbugs”而不是“jetty”?

    我正在使用 Maven 进行一些测试 并意识到我可以执行findbugsFindbugs 插件的目标 无需将插件添加到 POM 文件 另一方面 当我需要运行runJetty 插件的目标 我被迫将插件添加到 POM 文件中 否则构建失败 为什
  • 用于全文搜索和 2 亿多条记录的数据库

    我即将创建一个包含至少 2 亿个条目的庞大数据库 数据库需要可使用全文进行搜索 并且速度应该很快 我的数据库从许多不同的数据源获取数据 我需要定期导入新的或更新的数据 将我的所有数据存储在像 mysql 这样的关系数据库中 然后创建一个 n
  • Mercurial 与 Visual Studio 2010 的白痴清单

    所以我是一个源代码控制白痴 所以请用这个清单来幽默我 我最终决定使用Mercurial TortoiseHg VS2010 HgScc包 http bitbucket org zzsergant hgsccpackage wiki Home
  • (发件人:TObject)

    发件人 TObject 是什么意思 如 procedure TForm1 Button1Click Sender TObject var s Integer begin end Sender 是对触发事件的组件的引用 在这种情况下 Send
  • Android 缩放和密度问题

    Update 一些研究表明 华硕 Transformer TF700T 高端 的像素密度应约为 224 因此 android 报告的 159 值要么是错误的 要么已被某种方式修改 system 中的 lcd 密度键 build prop 由
  • Spring Security 的 AJAX 请求给出 403 Forbidden

    我有一个基于spring boot spring security thymeleaf的网站 在某些情况下我也使用ajax 问题 我在 Spring Security 中使用表单登录安全性 在浏览器中 登录后我可以使用rest API GE
  • 如何更改ios中FBSDKLoginButton中的默认登录按钮?

    如何自定义 Facebook 中的登录按钮 我不想使用 Facebook 默认登录按钮 对于 SDK 4 0 您应该添加一个按钮 并在按钮操作中使用以下代码 IBAction loginButtonClicked id sender FBS
  • 如何将 java ArrayList 转换为等效的 double[] [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Java 中从 List 转换为 double https stackoverflow com questions 6018267 how to cast from listdouble to
  • 在多个 angular.js 应用程序之间共享单个服务

    我正在构建一个电子商务网站 基于 shopify 并且使用多个小型 angularjs 应用程序来处理诸如快速购物车 愿望清单 过滤产品和其他一些较小项目之类的事情 我最初使用了一个大型应用程序 具有路由和所有内容 但当我没有完整的 RES
  • 缓存消息discord.js

    我想做一些反应角色 但为此 我必须缓存机器人启动之前发送的消息 我尝试过channel messages fetch 但到目前为止还没有奏效 我当前的代码 client on messageReactionAdd async reactio
  • 如何在 Metro 应用程序中从 Web 上下文(Iframe)发出 javascript 警报。

    在我的 Metro 应用程序中 我使用 iframe 加载 Web 应用程序 基本上是一个包含一些控件的表单 最后用户单击 完成 按钮 我想显示警报 我在地铁应用程序中知道 我们可以使用 new Windows UI Popup Messa
  • 如何停止或更改 Spring Integration Poller 的延迟

    我正在使用 Spring Integration 使用以下配置从目录中读取文件 但是 一旦找到任何文件 我希望停止轮询器 直到服务不再重新启动 有什么方法可以在运行时更改轮询器延迟或在运行时启动 停止轮询器 Bean public Mess
  • SQL Server 触发器从多个表中删除一条记录

    我知道这可以使用外键来完成 但我无法添加它们 或者当我插入新记录时会发生奇怪的事情 这个数据库中有很多存储过程 但我不知道它们是做什么的 因为我对存储过程一无所知 我希望有人可以帮助我找到一个触发器 当我从 Product 表中删除特定的
  • HTTPURLConnection 不遵循从 HTTP 到 HTTPS 的重定向

    我不明白为什么JavaHttpURLConnection不遵循从 HTTP 到 HTTPS URL 的 HTTP 重定向 我使用以下代码来获取页面https httpstat us https httpstat us import java
  • 通过 Amazon SQS 将压缩文本从 PHP 发送到 NodeJS

    我似乎一直坚持通过 Amazon SQS 将压缩消息从 PHP 发送到 NodeJS 在 PHP 方面我有 SQS gt sendMessage Array QueueUrl gt queueUrl MessageBody gt artic
  • jQuery Signature Pad:使用类型化版本获取 JSON 输出

    我一直在使用 Thomas J Bradley 的 jQuery Signature Pad 插件来捕获绘制的签名 并且效果很好 我想做的是还允许输入签名如演示所示 http thomasjbradley ca lab signature
  • json文件格式的升级路径

    我们将 Java 应用程序的用户首选项存储在 JSON 文件中 使用Jackson http jackson codehaus org 随着我们继续开发该应用程序 我们将添加首选项 重命名首选项并删除过时的首选项 当用户将应用程序升级到下一