2014年3月26日水曜日

Spring Json 返却 VB.NET 表示

Spring で Json 形式でレスポンスを返却する。

pom.xml
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

jp.s6131.sample.controller.HomeController.java

@RequestMapping(value = "/sampleList", method = RequestMethod.GET)
@ResponseBody
public List<Sample> sampleList(@RequestParam("cd") String cd) {
    return sampleService.selectByCode(cd);
}

ブラウザから以下URLを指定し、json を返却することを確認。
http://localhost/sample/sampleList?cd=cd1
[{"id":1,"code":"cd1","name":"名前1"},{"id":2,"code":"cd1","name":"名前2"},{"id":3,"code":"cd1","name":"名前3"}]

Visual Studio 2013 for Desktop を起動
「ファイル」「新しいプロジェクト」「Windows フォーム アプリケーション」

JSON.net の導入
「ツール」「ライブラリパッケージマネージャー」「パッケージマネージャーコンソール」
Install-Package Newtonsoft.Json

フォーム(Form1)にテキストボックス(TextBox1)、ボタン(Button1)、データグリッド(DataGridView1)を配置する。
デザイン画面で DataGridView1 を右クリック「列の追加」で id、cd、cdname (name とするとエラーとなる)を追加する。

Form1.vb
Imports System.Net
Imports System.IO
Imports System.Linq
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        DataGridView1.Rows.Clear()
        search_proc(TextBox1.Text)
    End Sub
    Private Sub search_proc(cd As String)
        Dim url As String = "http://localhost/sample/sampleList?cd=" & cd
        Dim req As WebRequest = WebRequest.Create(url)
        Dim res As WebResponse = req.GetResponse()
        Dim reader As StreamReader = New StreamReader(res.GetResponseStream())
        Dim jsonString As String = reader.ReadToEnd()
        Dim jsonList As List(Of JToken) = JArray.Parse(jsonString).Children.ToList
        For Each itemClass As JObject In jsonList
            itemClass.CreateReader()
            DataGridView1.Rows.Add(itemClass("id"), itemClass("code"), itemClass("name"))
        Next
        res.Close()
    End Sub
End Class

実行すると Form1 を表示、テキストボックスに cd1 を入力してボタン押下すると、データグリッドに
データを表示することを確認。


人気ブログランキングへ