JSON(文字列) => オブジェクトに変換する。
[ { "name":"山田太郎", "age":22 }, { "name\":"山田花子", "age":24 } ]
こんなやつを扱う。
次のusingをソースに追加しておく。
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.Diagnostics;
データのクラスを用意する。
[DataContract]
public class Person
{
[DataMember(Name="name")]
public string Name { get; set; }
[DataMember(Name="age")]
public int Age { get; set; }
}
変換する処理はこんな感じだ。
// JSON(文字列)を用意
var jsonStr = "[ { \"name\":\"山田太郎\", \"age\":22 }, { \"name\":\"山田花子\", \"age\":24 } ]";
// 文字列をバイト配列にしてメモリーストリームに追加する。
using (var memStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonStr)))
{
// シリアライザーを用意
var serializer = new DataContractJsonSerializer(typeof(List<Person>));
// メモリストリームから読み込んでオブジェクトに変換する。
var jsonObject = serializer.ReadObject(memStream) as List<Person>;
// 内容を表示
jsonObject.ForEach(person => Debug.WriteLine("{0},{1}", person.Name, person.Age));
}
実行すると、次のように出力される。
山田太郎,22
山田花子,24
JSONオブジェクト => JSON(文字列)に変換する。
// JSONオブジェクトを用意
var jsonObject = new List<Person>()
{
new Person() { Name="山田太郎", Age=22 },
new Person() { Name="山田花子", Age=24 }
};
// メモリストリームを用意
using (var memStream = new MemoryStream())
{
// シリアライザーを用意
var serializer = new DataContractJsonSerializer(typeof(List<Person>));
// JSONオブジェクトを変換してメモリーストリームに書き込む
serializer.WriteObject(memStream, jsonObject);
// メモリーストリームの内容を文字列に変換する。
var jsonStr = System.Text.Encoding.UTF8.GetString(memStream.ToArray());
// 表示する
Debug.WriteLine(jsonStr);
}
実行すると、次のように出力される。
[{"age":22,"name":"山田太郎"},{"age":24,"name":"山田花子"}]