【C#】C#プログラミングのイディオム(12章)シリアル化、逆シリアル化(おまけ)
仕事で使いそうになったので、自身含めて、利用したことのないメンバーの為に整理する。
シリアル化、逆シリアル化の何を取るにしても、以下のSTEPで定義をすれば良さそう。
と思われる。
例えば、オブジェクトをシリアライズする場合
using(var writer = XMLWriter.Create("hoge.xml")){ // 1.シリアライズした出力先の設定 var serializer = new XMLSerializer(hoge.GetType()); // 2.シリアライズする元データの設定(ここではhogeクラスに定義したデータ) serializer.Serialize(writer, hoge); // 3.シリアライズの実行 }
JSONデータを逆シリアライズし、オブジェクトに設定する場合
using(var stream = new FileStream("hoge.json", FileMode.Open, FileAccess.Read)){ // 1.逆シリアライズする元データの設定 var serializer = new DataContractJsonSerializer(typeof(hoge[])); // 2.逆シリアライズするオブジェクトの指定 var hoge = serializer.ReadObject(stream) as hoge; // 3.逆シリアライズの実行 }
で行けそうかなと。
また、テキストでは、練習問題以外、JSONデータの並びと、 オブジェクトのプロパティ設定の定義順が同じだったので、XMLと同じように 型定義の順番が左右するかと思っていた。
しかし、練習問題を実施すると、そうではなさそう。ということで、ググってみると
JSONには並び順の保証は内容で。 文字ならば、辞書のように、a,b,c・・・で昇順になっていそうです。 並び順を固定するには、連想配列などにして、実施するのがよさげかな?
実戦で役立つ C#プログラミングのイディオム/定石&パターン
posted with amazlet at 19.01.16