新しもの好きプログラマの耳より情報ブログ

仕事でもあるプログラミングについて役に立ちそうな情報を発信していこうというブログです。役に立たなそうな情報はfacebookで。

JSON.NETのデシリアライズは、変数が増減していた場合も使える

この記事の内容に加えてXMLYAMLも試してみた、より新しい記事はこちら。 http://suusanex.hatenablog.jp/entry/2019/09/23/171255


JSON.NETのシリアライズ・デシリアライズを採用しようとして、1つ気になる点があったので実験した。.NET 4.5.2 + Newtonsoft.Json 12.0.2 を使用。

用途の都合で、バージョン1でシリアライズした文字列を、ファイル等を介してバージョン2で読み込む可能性がある。

ここで、バージョン2で対象クラスの変数が増減することがありうる。その場合でもデシリアライズは可能なのか?

「クラスが異なるので例外」となるようでは、採用が難しい。デシリアライズに成功し、次のようになってほしい。

  • 増えた変数(JSONには無いが、クラスにはある):クラスのデフォルト値のまま
  • 減った変数(JSONにはあるが、クラスには無い):JSONを無視

実験したところ、期待通りの動作になった。これなら、バージョンアップ可能性がある場合も使えそうだ。

https://github.com/suusanex/sample_json_serialize