Visual Basic サンプル集
 VB2008対応 VB2010対応 VB2012対応 VB2013対応

JSONのシリアライズ・デシリアライズ


1.オブジェクトをJSONにシリアライズする例

次の関数は対象のオブジェクトtargetをJSONにシリアライズして返す。
この場合「JSONにシリアライズ」とはオブジェクトをJSON形式で表現することを指す。


VB2008対応 VB2010対応 VB2012対応 VB2013対応
Public Function Serialize(target As Object) As String

    Using stream As New IO.MemoryStream

        '▼シリアライズ実行
        Dim serializer As New DataContractJsonSerializer(target.GetType)
        serializer.WriteObject(stream, target)

        '▼結果を取得
        Dim result As String = System.Text.Encoding.UTF8.GetString(stream.ToArray())
        Return result

    End Using

End Function

すぐ試せる例

上記関数の使用例。

前提

 VB2010対応 VB2012対応 VB2013対応
Imports System.Runtime.Serialization.Json

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim p As New Person
        p.Id = 627
        p.Name = "徳川家康"

        TextBox1.Text = Serialize(p)

    End Sub

    Public Function Serialize(target As Object) As String

        Using stream As New IO.MemoryStream

            '▼シリアライズ実行
            Dim serializer As New DataContractJsonSerializer(target.GetType)
            serializer.WriteObject(stream, target)

            '▼結果を取得
            Dim result As String = System.Text.Encoding.UTF8.GetString(stream.ToArray())
            Return result

        End Using

    End Function

End Class

Public Class Person

    Public Property Id As Integer
    Public Property Name As String

End Class

この例を実行して得られるJSONは以下の通り。

 
{"Id":627,"Name":"徳川家康"}

2.JSONをデシリアライズする例

次の関数はシリアライズで作成したJSONを読み込んでオブジェクトを作成する。

VB2008対応 VB2010対応 VB2012対応 VB2013対応
Public Function Deserialize(Of T)(json As String) As T

    Dim result As T
    Dim serializer As New DataContractJsonSerializer(GetType(T))

    Using stream As New IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(json))
        result = DirectCast(serializer.ReadObject(stream), T)
    End Using

    Return result

End Function

すぐ試せる例

上記関数の使用例。

前提

VB2008対応 VB2010対応 VB2012対応 VB2013対応
Imports System.Runtime.Serialization.Json

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim json As String = "{""Id"":627,""Name"":""徳川家康""}"
        Dim p As Person

        p = Deserialize(Of Person)(json)

        MsgBox(p.Name)

    End Sub

    Public Function Deserialize(Of T)(json As String) As T

        Dim result As T
        Dim serializer As New DataContractJsonSerializer(GetType(T))

        Using stream As New IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(json))
            result = DirectCast(serializer.ReadObject(stream), T)
        End Using

        Return result

    End Function

End Class

Public Class Person

    Public Property Id As Integer
    Public Property Name As String

End Class

参考

DataContractJsonSerializerクラス

http://msdn.microsoft.com/ja-jp/library/system.runtime.serialization.json.datacontractjsonserializer.aspx