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形式で取得し、ツイートのみを画面に表示します。
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