1

私はjsonを初めて使用し、ネストされたjsonをオブジェクトに逆シリアル化する作業を行っています。外側のオブジェクトは正常に機能しますが、内側のオブジェクトの値を取得できません。リストオブジェクト、コレクション、datacontractserializerの使用を含むいくつかの解決策を試しましたが、何も機能しないようです。私はおそらく明らかな何かを見逃していると思います。これが私が今持っているものです:

json文字列は次のようになります:{"type": "lookup"、 "message": "Success"、 "version":0.1、 "user":{"loginName": "username"、 "vendor":null}}

私のコードは次のとおりです。

<Serializable()> Public Class LookupReturn
    Private _Type As String = ""
    Private _Message As String = ""
    Private _Version As String = ""
    Private _user As New jsonUser


    Public Property Type() As String
        Get
            Return _Type
        End Get
        Set(ByVal value As String)
            _Type = value
        End Set
    End Property

    Public Property Message() As String
        Get
            Return _Message
        End Get
        Set(ByVal value As String)
            _Message = value
        End Set
    End Property

    Public Property Version() As String
        Get
            Return _Version
        End Get
        Set(ByVal value As String)
            _Version = value
        End Set
    End Property

    Public Property Userobj() As jsonUser
        Get
            Return _user
        End Get
        Set(ByVal value As jsonUser)
            _user = value
        End Set
    End Property

End Class

<Serializable()> Public Class jsonUser
    Private _loginName As String = ""
    Private _vendor As String = ""

    Public Property loginName() As String
        Get
            Return _loginName
        End Get
        Set(ByVal value As String)
            _loginName = value
        End Set
    End Property

    Public Property vendor() As String
        Get
            Return _vendor
        End Get
        Set(ByVal value As String)
            _vendor = value
        End Set
    End Property

End Class

Dim _Json As New JavaScriptSerializer()
Dim _Message as string = "{"type":"lookup","message":"Success","version":0.1,"user"{"loginName":"username","vendor":null}}"
Dim returnData As LookupReturn = _Json.Deserialize(Of LookupReturn)(_Message)

LookupReturnオブジェクトのタイプ、メッセージ、バージョン値のデータを取得していて、ユーザーアイテムのオブジェクトを返していますが、loginNameの値は空の文字列です。

どんな助けでもいただければ幸いです!

ありがとう!

4

1 に答える 1

0

これにもう少し取り組んだ後、コードの Get/Set セクションにあるはずのように、ネストされたオブジェクトに名前が付けられていないことが問題であることに気付きました。jSonで呼ばれていた「user」ではなく「Userobj」と呼んでいたため、デシリアライザーがうまく動作しませんでした。名前を「ユーザー」に変更したところ、すべてうまくいきました!

于 2012-09-30T18:08:53.307 に答える