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":"山田花子"}]