オブジェクトをJsonへシリアライズ・デシリアライズ


今私が作っているソフトで、HTMLとC#プログラムでデータのやりとりをしないといけなくなったのですが、その時にC#オブジェクトをJavascriptへ簡単に伝えるとなるとJsonという選択肢が一番現実的かと思います。
C#コードでJSONへデシリアライズすることになったのでコードの紹介。

一応、今後たくさん使う機会があるかと思って拡張メソッドにしてみました。ソースコードをファイルごとそのままおいておきます。

参照設定

まず参照設定に「System.Runtime.Serialization」を追加してください。.NET Frame work 3.5からのサポートみたいです。

ソースコード

オブジェクトに対しSaveInJson(JSONへデシリアライズ)、Stringに対しLoadInJson(JSONからシリアライズ)の2つのメソッドを追加しています。
両方共ジェネリック型の指定が必須になっています。

必要に応じてソースコードから抜き出して使ってください。

シリアライズするオブジェクト

シリアライズするオブジェクトにはSerializable属性の指定だけでは正常にシリアライズ化してくれません。
DataContract属性も付ける必要があります。

これにデータを入れてシリアライズするとこのように変換されます。

あ、あとDataMemberに対してはNameパラメータを指定してあげたほうがいいみたいです。そうしないと名前が記号を含む文字になったり名前がコロコロ変わったりと大変なことに…
デシリアライズするとこんな感じになってしまいます。

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">