Last-modified: Sun, 17 Feb 2013 21:51:31 JST
Counter:5007 Today:2 Yesterday:1 Online:9
このエントリーをはてなブックマークに追加

C# - .NetでJSONデータを作る

About

データ形式の一つであるJSONはなかなか汎用性が高くさまざまなアプリケーションで主に通信のために利用されています。ここではあるオブジェクトに与えられた値をJSON形式で出力する方法について解説しています。自力でJSON形式にするような仕組みを作っても良いかもしれませんが、ここでは.NetFrameworkに用意されている"DataContractJsonSerializer"を利用します。

How To

それほど難しくないのでソースコードは全て一つにまとめてしまいました。むしろソースコードを読んで理解できない場合にはJSONによる通信プログラムを作り上げることは難しいでしょう。

まずJSONで出力するためのクラス"DataContractJsonSerializer"を用意します。これは"System.Runtime.Serialization.Json"名前空間に含まれているので任意に参照を追加しておく必要があります。あとはJSON形式で出力する変数を持ったオブジェクトをつくり、ストリーム上に書き出すだけです。ここでは実用性を考慮してメモリ上に書き出しています。

    //出力するデータ構造を示すクラス
    public class TempDataClass
    {
        public int num;
        public string message;
    }

    class Program
    {
        static void Main(string[] args)
        {

            //JSONとして出力するためのクラス
            DataContractJsonSerializer serializer 
                = new DataContractJsonSerializer(typeof(TempDataClass));
            
            //出力するクラス
            TempDataClass temp = new TempDataClass()
            {
                num = 1,
                message = "SampleText"
            };

            //メモリに出力する
            MemoryStream mStream = new MemoryStream();
            serializer.WriteObject(mStream, temp);
            
            //コンソールに出力してみる
            mStream.Position = 0;
            StreamReader reader = new StreamReader(mStream);
            Console.WriteLine(reader.ReadToEnd());
            Console.ReadKey();
        }
    }

メモリ上に書き出してしまっているので、確認のためコンソール上に出力します。結果は次の通りです。

{"message":"SampleText","num":1}

ちなみにMonoには"DataContractJsonSerializer"がない様子。

Reference