SSブログ

[.NET]JSON.NET(.NET4以降)その1 [Programming .NET Tips]

[はじめに]
.NETJSONデータを扱う機会があったので、予習がてらに作ってみました。
 JSONの解析には、逆シリアライズを使用します。
 .NET3.5以降であれば、.NET標準のクラスライブラリでも実装できますが、
 逆シリアライズの結果を格納するクラスを、別途定義する必要があるので、
 もっとシンプルにできないか調べてみました。
 フリーのライブラリで『JSON.NET』を使うと、よりシンプルに実装できそうなので、
 サンプルを作ってみました。(.NET4で作成します。)
[JSON.NETについて]
・ダウンロード元
 下記サイトからダウンロードできます。
 http://json.codeplex.com/
・対象フレームワーク
 ・.NET 2.0
 ・.NET 3.5
 ・.NET 4
 ・Silverlight
 ・Windows Phone and Windows 8
・オープンソース
 ソースが公開されているので、
 ソリューションにプロジェクトに追加して、そのままビルドできます。
 プロジェクトファイルが、.NETのバージョン毎に用意されているので、
 対応するプロジェクトを追加します。
・言語
 C#で記述していますが、
 ライブラリの呼出しは、.NET言語であれば、C#以外でも可能です。

[ソース]
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace SerialSample
{
    class Program
    {
        static void Main(string[] args)
        {
            //前提条件
            //※参照設定に『Newtonsoft.Json.NET40』を追加

            //JSON文字列を作成
            var sb = new StringBuilder();
            sb.Append(@"{");
            sb.Append(@"  ""キー1"":""値1"",");
            sb.Append(@"  ""キー2"":""値2"",");
            sb.Append(@"  ""キー3"":");
            sb.Append(@"    {");
            sb.Append(@"      ""キー3_1"":""値3_1"",");
            sb.Append(@"      ""キー3_2"":""値3_2""");
            sb.Append(@"    },");
            sb.Append(@"  ""キー4"":");
            sb.Append(@"    [");
            sb.Append(@"      {");
            sb.Append(@"        ""キー4_1"":""値4_0_1"",");
            sb.Append(@"        ""キー4_2"":""値4_0_2""");
            sb.Append(@"      },");
            sb.Append(@"      {");
            sb.Append(@"        ""キー4_1"":""値4_1_1"",");
            sb.Append(@"        ""キー4_2"":""値4_1_2""");
            sb.Append(@"      }");
            sb.Append(@"    ],");
            sb.Append(@"  ""キー5"":");
            sb.Append(@"    [");
            sb.Append(@"      ""値5_0_1"",");
            sb.Append(@"      ""値5_0_2"",");
            sb.Append(@"      ""値5_0_3""");
            sb.Append(@"    ]");
            sb.Append(@"}");

            //JSON文字列を逆シリアル化
            var jobj = JsonConvert.DeserializeObject<JContainer>(sb.ToString());

            //結果を表示
            Console.WriteLine("キー1:{0}", jobj["キー1"].ToString());
            Console.WriteLine("キー2:{0}", jobj["キー2"].ToString());
            Console.WriteLine("キー3.キー3_1:{0}", jobj["キー3"]["キー3_1"].ToString());
            Console.WriteLine("キー3.キー3_2:{0}", jobj["キー3"]["キー3_2"].ToString());

            for (int i = 0; i < jobj["キー4"].Count(); i++) 
            {
                Console.WriteLine(
                    "キー4.[{0}].キー4_X_1:{1}",
                    i.ToString(),
                    jobj["キー4"][i]["キー4_1"].ToString());
                Console.WriteLine(
                    "キー4.[{0}].キー4_X_2:{1}",
                    i.ToString(),
                    jobj["キー4"][i]["キー4_2"].ToString());
            }

            for (int i = 0; i < jobj["キー5"].Count(); i++)
            {
                Console.WriteLine(
                    "キー5.[{0}]:{1}",
                    i.ToString(),
                    jobj["キー5"][i].ToString());
            }

            Console.ReadLine();

            //出力結果
            // キー1:値1
            // キー2:値2
            // キー3.キー3_1:値3_1
            // キー3.キー3_2:値3_2
            // キー4.[0].キー4_X_1:値4_0_1
            // キー4.[0].キー4_X_2:値4_0_2
            // キー4.[1].キー4_X_1:値4_1_1
            // キー4.[1].キー4_X_2:値4_1_2
            // キー5.[0]:値5_0_1
            // キー5.[1]:値5_0_2
            // キー5.[2]:値5_0_3
        }
    }
}
[C#]JSON.NET

タグ:.net JSON JSON.NET
nice!(2)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 2

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。