DynamicJSONを利用したJSONのパース - C#

DynamicJSONを用いてJSONをパースするコードを紹介します。

概要

Dynamic JSONでJsonをパースするにはDynamicJson.Parse()メソッドを利用します。

プログラム例

事前準備:方法1 NuGetを利用する

NuGetが利用できる環境であれば、NuGetを利用してDynamicJsonを導入できます。
Visual Studioを起動します。


[表示]メニューの[その他のウィンドウ]メニューの[パッケージ マネージャー コンソール]を選択します。


ウィンドウの下部に[パッケージ マネージャー コンソール]ウィンドウが表示されます。


コンソールウィンドウのプロンプト"PM>"に下記のコマンドを入力して実行します。
Install-Package DynamicJson


正常に実行できると、コンソールウィンドウに正常にインストールされた旨のメッセージが表示されます。

事前準備:方法2 DynamicJsonのアセンブリをダウンロードして参照する

Windowsフォームプロジェクトを新規作成します。


ソリューションエクスプローラのプロジェクトノード内の[参照設定]ノードを選択し右クリックします。ポップアップメニューが表示されますので[参照の追加]メニューを選択します。


[参照マネージャー]ダイアログが表示されます。一覧に"DynamicJson.dll"がある場合は左端のチェックボックスにチェックをつけます。ない場合は、ダイアログ下部の[参照]ボタンをクリックします。


[参照するファイルの選択]ダイアログが表示されます。DynamicJsonのアセンブリのDLLファイル(DynamicJson.dll)を選択します。選択後[追加]ボタンをクリックします。


追加されると下図の状態になります。一覧にDynamicJson.dllが追加され、左端のチェックボックスにチェックがつきます。[OK]ボタンを押してダイアログボックスを閉じます。


[参照設定]ノードに"DynamicJson"が追加されました。

UI

下図のUIを作成します。Buttonを2つテキストボックスを1つ配置します。今回のプログラムではButton2のみを利用します。

コード

下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Codeplex.Data;

namespace DynamicJsonDemo
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
      string json = textBox1.Text;
      dynamic obj = DynamicJson.Parse(json);

      textBox1.Text += "-----\r\n\r\n";
      textBox1.Text += "Item-Name : " + obj.Item.Name +"\r\n";
      textBox1.Text += "Item-Price : " + obj.Item.Price + "\r\n";
      textBox1.Text += "Item-Alias : ";
      foreach (var elem in obj.Item.Alias) {
        textBox1.Text += elem +", ";
      }
      textBox1.Text += "\r\n";

      textBox1.Text += "Item-AddInfo-Region : " + obj.Item.AddInfo.Region + "\r\n";
      textBox1.Text += "Item-AddInfo-Lang : " + obj.Item.AddInfo.Lang + "\r\n";
    }
  }
}

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


テキストボックスにJSONを入力します。
{"Item":{
  "Name":"Penguin",
  "Price":250,
  "Alias":["Pen","ペンギン","penguin"],
  "AddInfo":{
    "Region":"Japan",
    "Lang":"ja"}
  }
}
を入力しました。


入力後[Button2]をクリックします。JSONがパースされ結果がテキストボックスに追加で表示されます。


別のJSONを入力します。
{"Item":{
  "Name":"くじら",
  "Price":15800,
  "Alias":["Whale","クジラ","Kujira"],
  "AddInfo":{
    "Region":"Japan",
    "Lang":"ja"}
  }
}
を入力しました。


[Button2]をクリックします。入力内容にあった結果がテキストボックスに表示されます。

参考:Twitter のユーザータイムラインをパースする

注意
現在はOAuth認証が必須となっているため、下記のコードは動作しません。

コード

ユーザータイムラインをJSON形式で取得し、ツイートのみを画面に表示します。
FormMain.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Codeplex.Data;
using System.Net;

namespace DynamicJSON
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      int k=1;
      WebClient publicTL = new WebClient();
      string str = publicTL.DownloadString(
        @"http://twitter.com/statuses/user_timeline/iPentec.json?page=" + k.ToString());
      
      dynamic statuses1 = DynamicJson.Parse(str);
      foreach (var status in statuses1) {
        textBox1.Text += status.text + "\r\n";
      }
    }
  }
}

実行結果

プロジェクトを実行します。TwitterのユーザータイムラインのJSONをパースしツイートのテキストがテキストボックスに表示されます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2020-07-04
作成日: 2010-08-13
iPentec all rights reserverd.