VB.NET Json.NETを試す

ぱふぉちゅー担当としては、既存処理の分析と回帰テスト(振る舞いが変わってないこと=IOが変わってないこと)が必要


でも、たとえば、ある関数のIOをすばやく確認したいんだけど、デバッグの「ローカル ウィンドウ」とかじゃ手間がかかり過ぎる
# VB.NETのビルトインDTO的なヤツってもっすごいfat
# DataTableとかね


LL系だとオブジェクトのTextDumperとか標準であったりするのに...

JavaでもBeanのSerializerとか使ってdumper(Object o)とか作ったりするのよね


んで、今回もDumper(o As Object)でもこさえようかとwww

JavaだとJUnitのInputにまわせたりするのでXMLでdumpしたりするんだけど、より可読性の高いJSONでやってみた


コード(純粋なDTOとDataTable)

Imports System.IO
Imports System.Text
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq

Public Class Person
    Public name As String

    Private _birthday As String

    Public Property Birthday() As String
        Get
            Return _birthday
        End Get
        Set(value As String)
            _birthday = value
        End Set
    End Property
End Class

Public Class JsonTest
    Public Shared Sub Main()
        test1()
        test2()
    End Sub

    Private Shared Sub test1()
        Dim p As New Person
        p.name = "あいう"
        p.Birthday = "2011/01/02"

        Dim jsonString As String = JsonConvert.SerializeObject(p)
        Debug.Print("■" & jsonString)
    End Sub

    Private Shared Sub test2()
        'Dim s As String = "Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;User ID=sa;Password=sapassword;database=db1;"
        Dim s As String = "Provider=SQLOLEDB;Data Source=127.0.0.1,1433;User ID=sa;Password=sapassword;database=db1;"

        Dim Cn As New OleDb.OleDbConnection(s)
        Dim SQLCm As OleDb.OleDbCommand = Cn.CreateCommand
        Dim Adapter As New OleDb.OleDbDataAdapter(SQLCm)
        Dim table As New DataTable

        SQLCm.CommandText = "select * from dbo.item"
        Adapter.Fill(table)

        Dim jsonString As String = JsonConvert.SerializeObject(table, Formatting.Indented)
        Debug.Print("■" & jsonString)
    End Sub

End Class

結果

{"name":"あいう","Birthday":"2011/01/02"}[
  {
    "item_id": 1,
    "item_name": "製品A",
    "price": 10000
  },
  {
    "item_id": 2,
    "item_name": "製品B",
    "price": 20000
  },
  {
    "item_id": 3,
    "item_name": "製品B",
    "price": 20000
  }
]


フィールドにもプロパティにも対応していて、DataTableもキレイ♪


http://www.carlprothman.net/Default.aspx?tabid=86
http://james.newtonking.com/projects/json/help/
http://logicalerror.seesaa.net/article/154654720.html
http://james.newtonking.com/projects/json/help/SerializingJSON.html


ちなみに、Chromeのアドインで*.jsonXMLみたいに見ることができます♪♪

https://chrome.google.com/extensions/detail/chklaanhfefbnpoihckbnefhakgolnmc



これは、ASP.NETAjax連携で使ってみたい


Json.NETよくできてます
dllの参照を追加するだけだしね(詳細はまた)

Work! Enjoy it!