3

問題定義:

JSONJava クラスにマップできるデータを格納する Java サーバーがあります。Java クラスは変更される可能性があります。JSON目標は、Java クラスを更新し、古いバージョンのデータを新しいバージョンの Java オブジェクトにデコードできるようにすることです。適切なバージョン管理システムが整っている必要があります。たとえば、デフォルト値を使用して Java クラスに新しいフィールドを追加する機能。古いJSONデータにこのフィールドがない場合、Java オブジェクトはフィールドのデフォルト値を使用できます。

質問:

私は何か見落としてますか?より優れたバージョニングをサポートする他のライブラリはありますか?

  • JSONそのデータをどのように保存する必要がありますか?

2 つの選択肢があります。オプション 1: これらのJSONファイル (バージョンが同じ場合は構造が共通) をフォルダーに個別に保存できます。たとえば、json/j1.json と json/j2.json の 2 つのファイルがあります。オプション 2:NoSQLなどのデータベースを使用できますMongoDB。しかし、これは以前のオプションよりも利点がありますか? aを別の Java クラスにキャストできるようにする必要があるため、aBasicDBObjectで aを要求するのは無意味です。DBCollectionこの場合、どのオプションが推奨されますか? 多分別のオプションがより適していますか?

4

2 に答える 2

0

これを書いている時点 (2.9.x) では組み込みの Jackson サポートはありませんが、Jackson Model Versioning Moduleは、JSON モデルの古いバージョンを現在のバージョン (およびその逆) に変換するために使用できるバージョン管理サポートを追加します。 ) POJO にマップされる前。

GSON の基本的なバージョン管理機能をこのモジュールにマップする方法の例については、Jackson 2 のバージョン管理サポートに関する私の回答を参照してください。完全な機能の例については、モジュールの GitHub ページを参照してください。

免責事項: 私はこのモジュールの作成者です。モジュールを使用するためのSpring MVC ResponseBodyAdviseも作成しました。

于 2016-08-23T19:00:01.310 に答える