最近Web APIでサポートされることが激しく多くなってるJSONですが、C#でも手軽に扱えるようになってます。
DataContractとかDataMember属性を使うと要素名とかまで指定できますが、属性とかつけなくても使うだけなら全然使えます。しかも使い方は簡単!ということで忘れないようにコード例だけ書いてメモっておきます。
namespace ConsoleApplication15 { using System; using System.IO; using System.Runtime.Serialization.Json; using System.Text; class Program { static void Main(string[] args) { // System.Runtime.Serialization.Json.DataContractJsonSerializerが肝! // コンストラクタで型を指定するのが肝です var s = new DataContractJsonSerializer(typeof(Person)); // 読み書きするためのストリーム(本番はWebからのストリームになると思われる) var ms = new MemoryStream(); // ストリームにオブジェクトを書き込む s.WriteObject(ms, new Person { Name = "かずき" }); // JSONを出力 Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray())); // 読み込むためにストリームの位置を最初に戻す ms.Seek(0, SeekOrigin.Begin); // JSONからオブジェクトへ! var p = s.ReadObject(ms) as Person; // 名前を出力してみる Console.WriteLine(p.Name); } } public class Person { public string Name { get; set; } } }
実行結果は以下のようになります。
{"Name":"かずき"} かずき
因みにDataMember属性を指定することでJSONにするときのキーの名前を指定できます。
[DataContract] public class Person { // 属性で要素名を指定する [DataMember(Name="fullname")] public string Name { get; set; } }
上記のようにDataMember属性をつけて実行すると、以下のような結果になります。
{"fullname":"かずき"} かずき
これで自由自在にJSONのAPIを使えます!