【VB.NET】アプリケーションからJSON形式でサーバと通信する

VB.NETのクライアントアプリケーションでWEBサービスにアクセスしてJSON形式のデータをデコードしたときのメモ(ASP.NET上ではない)。

開発環境は.NET Framework2.0 Visual Studio 2005

方法としては次の2通り

どっちを使うか迷いましたが、「ASP.NET 2.0 Ajax Extensions」は.NET Framework3.5から標準搭載されるようなので、こちらを使うことに決定。

両者の速度の違いなどがここのブログに書いてあるので一読しとくといいかも。

ASP.NET 2.0 Ajax Extensionsここから「Download ASP.NET Extensions v1.0」をクリックしてダウンロード。
その後、インストーラからインストール。

Visual Studio 2005では「プロジェクト」→「参照の追加」→「System.Web.Extensions」を選択して、次のをimportsしとく

Imports System.Net 
Imports System.Text 
Imports System.Web.Script.Serialization

サンプルコードは次のような感じ。

Dim sTargetUrl As String = "http://hoge.com/webservice/" 
Dim objWeb As WebClient = New WebClient() 
Dim objSrializer As JavaScriptSerializer = New JavaScriptSerializer() 
Dim objEncode As Encoding = Encoding.UTF8 
Dim bResult As Byte() = objWeb.DownloadData(sTargetUrl) 
Dim sJson As String = objEncode.GetString(bResult) 
Dim objHash As Hashtable = objSrializer.Deserialize(Of Hashtable)(sJson)

JavaScriptSerializerについてはMSDNを参考に。

HTTPのGETメソッドを発行するサンプルコードはここを参考に。

<2009/03/04 追記>
クライアントアプリケーションからjson形式のデータをポストするときの注意点。

.NET側でobject形式をSerializeメソッドを使ってjson形式に変換するときにHashTableが入れ子になっているとうまくシリアライズされないみたい。
Dictionary(Of String, Object)
だと大丈夫だったのでジェネリックなクラスを使う癖をつけた方がよさげ。
詳しくはMSDNを参照