C#でJSON Serializeによる設定ファイル管理とバージョンアップ

本記事は、[C#での設定ファイル管理とパラメータのバージョンアップ]の続きとして、JSONのSerializeとDeSerializeによる設定情報やパラメータの扱いについて記載します。JsonのSerializeとDeserializeは、設定ファイル管理において扱いやすい特徴があり、さらにファイルサイズや速度面で現在はXMLのSerializeより多く使わています。

Ⅰ. System.Text.JsonのSerializeを使う方法

説明で使うXMLファイル

説明で使うデータクラス

System.Text.Jsonによる設定ファイルへ書き込み

.net標準で入っているSystem.Text.Jsonを使ってJsonファイルを読み書きする方法です。

System.Text.Jsonによる設定ファイルからの読み込み

Ⅱ. DataContractJsonSerializerを使う方法

XML DataContractSerializerと似ています。試してみたら、メンバー順番が変わっても正常にDeserializeできました。ということで、XML DataContractSerializerより、こちらが良いですね。

DataContractJsonSerializerによる設定ファイルへ書き込み

DataContractJsonSerializerによる設定ファイルからの読み込み

あまり変わりませんが、以下の方法でも可能です。

呼び出し側

Newtonsoft.Json.JsonSerializerによる方法

System.Text.JsonのSerializeとクラスがJsonSerializerの同じ名称ですが、名前空間が違います。Newtonsoft.Json.JsonSerializerは、オープンソースであることからNuGetとか取得する必要があります。ただ、DataContractJsonSerializerより2倍ぐらい早いこと、また、扱い方が簡単である特徴があります。

 Newtonsoft.Json.JsonSerializerによる設定ファイルへ書き込み

Newtonsoft.Json.JsonSerializerによる設定ファイルの読み込み

設定ファイルのバージョンアップ

JSONを扱う3つの方法を紹介しましたが、3つとも、メンバーの追加やメンバーの順番入れ替えに柔軟に対応しています。そのため、XMLよりは使い道は広がるので、JSONを使ったほうがバージョンアップを考慮した場合は効率が良くなります。ただ、こちらも、アプリケーションの都合上、どうしてもバージョンアップが必要な場合があると思います。

バージョンアップの基本的な流れについては、「設定とパラメータファイルのバージョンアップ仕組み」を参照してください。

まとめ

XMLのSerializeより、JSONのSerializeのほうが柔軟性、速度面においてもより効率的と言えます。ですので、もし、XMLを使うならJSONを使うと効果があるので、JSONでSerializeすると良いです。(ただし、どうしても、XMLを使うべきである場合はあり得ると思いますが、それは仕方ないですね)