C#でオブジェクトをJSON形式でシリアライズするにはまずシリアライズするクラスにDataContract属性とそのプロパティにDataMember属性を設定しておく。
[System.Runtime.Serialization.DataContract()]
public class Class1
{
[System.Runtime.Serialization.DataMember()]
public int Number001 { get; set; }
[System.Runtime.Serialization.DataMember()]
public string Text001 { get; set; }
}
DataContractJsonSerializerを使用して下記のようにシリアライズ、デシリアライズを行える。
class Program
{
static void Main(string[] args)
{
var serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Class1));
// Class1のインスタンスをJSONにシリアライズ
var stream = new System.IO.MemoryStream();
serializer.WriteObject(stream, new Class1() { Number001 = 123, Text001 = "あああ" });
var jsonStr = Encoding.UTF8.GetString(stream.ToArray());
// JSONをClass1のインスタンスにデシリアライズ
byte[] bytes = Encoding.UTF8.GetBytes(jsonStr);
stream = new System.IO.MemoryStream(bytes);
Class1 class1 = (Class1)serializer.ReadObject(stream);
}
}
注)以前の記事はWCFが内部的に使用するクラス(JsonQueryStringConverter)を使っていたので書き換えた。