3

问题定义:

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

问题:

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

  • 应该如何存储这些JSON数据?

我看到两个选项。选项 1:我可以将这些JSON文件(如果它们具有相同的版本,则它们具有共同的结构)单独存储在一个文件夹中。例如,我有 2 个文件:json/j1.json 和 json/j2.json。选项 2:我可以使用NoSQL数据库,例如MongoDB. 但这比以前的选择有优势吗?要求 a BasicDBObjectin a是没有意义的,DBCollection因为我需要它才能将它转换为另一个 Java 类。在这种情况下推荐哪个选项?也许另一种选择更适合?

4

2 回答 2

0

在撰写本文时(2.9.x)没有内置的 Jackson 支持,但是,Jackson 模型版本控制模块添加了版本控制支持,可用于将 JSON 模型的旧版本转换为当前版本(反之亦然) 在映射到 POJO 之前。

有关如何将 GSON 的基本版本控制功能映射到此模块的示例,请参阅我对Jackson 2 support for versioning的回答。有关完整功能的示例,请参阅模块的 GitHub 页面

免责声明:我是这个模块的作者。我还为使用该模块编写了一个Spring MVC ResponseBodyAdvise 。

于 2016-08-23T19:00:01.310 回答
0

文档存储BaseXJSON模块,当然,通过FLOWR这些模块很容易添加到数据库中。很容易,并且有据可查。

  let $content := file:read-text('x.json')
  let $json := json:parse($content)
  return admin:write-log($json)

类似的东西,不确定您的要求,但肯定可以输入数据库。

于 2020-02-03T22:47:47.207 回答