シリアライズとデシリアライズ

前回のシリアライズをおさらいします。エンティティオブジェクトをJSON文字列へ変換する処理です。

シリアライズ

WebInfo webInfo = new WebInfo();
webInfo.age = 4;
webInfo.webname = "FoxDevelop";
webInfo.website = "foxdevelop.com";
webInfo.students = new Person[] { new Person { name = "Tom" }, new Person { name = "Jim" } };
// webinfoオブジェクトをJSON文字列に変換
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
new JsonSerializer().Serialize(writer, webInfo);
string json = sw.GetStringBuilder().ToString();Code language: JavaScript (javascript)
生成されるJSON結果
{"webname":"FoxDevelop","website":"foxdevelop.com","age":4,"students":[{"name":"張三"},{"name":"李四"}]}Code language: JSON / JSON with Comments (json)

デシリアライズ

JSON文字列をエンティティオブジェクトへ変換します

方法1(低レベルReader記述)

WebInfo model = new JsonSerializer()
    .Deserialize(new JsonTextReader(new StringReader(json)), typeof(WebInfo)) as WebInfo;Code language: JavaScript (javascript)

方法2(簡潔なジェネリック記述、Newtonsoft.Json)

WebInfo model = JavaScriptConvert.DeserializeObject<WebInfo>(json);Code language: HTML, XML (xml)

new JsonSerializer().Deserialize(new JsonTextReader(new StringReader(jsonString)), typeof(クラス名) as クラス名

上記のメソッドでJSONオブジェクトをエンティティオブジェクトにデシリアライズできます。

こちらの書き方も可能です

JavaScriptConvert.DeserializeObject<NodeInfo>(jsonText)

シリアライズとデシリアライズ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です