0

このトピックは初めてです。基本的に、次の JSON 文字列があります。

"{"payChannleResult":{"lastestPayChannel":"","supportedPayChannelList":{"supportTopPayChannel":[{"name":"FastPay","cashierCode":"CREDITCARD","supportSecPayChannelList":{"supportSecPayChannel":[{"name":"BankA","cashierCode":"CREDITCARD_A"},{"name":"BankB","cashierCode":"CREDITCARD_B"},
{"name":"BankE","cashierCode":"CREDITCARD_E"},
{"name":"More","cashierCode":"CREDITCARD"}]}},
{"name":"Credits","cashierCode":"DEBITCARD","supportSecPayChannelList":{"supportSecPayChannel":[{"name":"BankF","cashierCode":"DEBITCARD_F"},
{"name":"BankI","cashierCode":"DEBITCARD_I"},
{"name":"More","cashierCode":"DEBITCARD"}]}}]}}}"

そして、私はこれのためのクラスを持っています:

<Serializable()> Public Class RootObject
    Private _payChannelResult As PayChannleResult
    Public Property payChannleResult() As PayChannleResult
        Get
            Return _payChannelResult
        End Get
        Set(ByVal value As PayChannleResult)
            _payChannelResult = value
        End Set
    End Property
End Class

<Serializable()> Public Class PayChannleResult
    Private _lastestPayChannel As String 'LastestPayChannel
    Private _supportedPayChannelList As SupportedPayChannelList

    Public Property lastestPayChannel() As String
        Get
            Return _lastestPayChannel
        End Get
        Set(ByVal value As String)
            _lastestPayChannel = value
        End Set
    End Property

    Public Property supportedPayChannelList() As SupportedPayChannelList
        Get
            Return _supportedPayChannelList
        End Get
        Set(ByVal value As SupportedPayChannelList)
            _supportedPayChannelList = value
        End Set
    End Property
End Class

<Serializable()> Public Class SupportedPayChannelList
    Private _supportTopPayChannel As SupportTopPayChannel
    Public Property supportTopPayChannel() As SupportTopPayChannel
        Get
            Return _supportTopPayChannel
        End Get
        Set(ByVal value As SupportTopPayChannel)
            _supportTopPayChannel = value
        End Set
    End Property
End Class


<Serializable()> Public Class SupportTopPayChannel
    Private _name As String
    Private _cashierCode As String
    Private _supportSecPayChannelList As SupportSecPayChannelList

    Public Property name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property
    Public Property cashierCode() As String
        Get
            Return _cashierCode
        End Get
        Set(ByVal value As String)
            _cashierCode = value
        End Set
    End Property

    Public Property supportSecPayChannelList() As SupportSecPayChannelList
        Get
            Return _supportSecPayChannelList
        End Get
        Set(ByVal value As SupportSecPayChannelList)
            _supportSecPayChannelList = value
        End Set
    End Property
End Class

<Serializable()> Public Class SupportSecPayChannelList

    Private _supportSecPayChannel As List(Of SupportSecPayChannel)
    Public Property supportSecPayChannel() As List(Of SupportSecPayChannel)
        Get
            Return _supportSecPayChannel
        End Get
        Set(ByVal value As List(Of SupportSecPayChannel))
            _supportSecPayChannel = value
        End Set
    End Property
End Class

<Serializable()> Public Class SupportSecPayChannel
    Private _name As String
    Private _cashierCode As String

    Public Property name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property
    Public Property cashierCode() As String
        Get
            Return _cashierCode
        End Get
        Set(ByVal value As String)
            _cashierCode = value
        End Set
    End Property
End Class



<Serializable()> Public Class LastestPayChannel
    Private _name As String
    Private _cashierCode As String
    Public Property name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property
    Public Property cashierCode() As String
        Get
            Return _cashierCode
        End Get
        Set(ByVal value As String)
            _cashierCode = value
        End Set
    End Property
End Class

最後に、デシリアライザー関数を次のように呼び出しました。

Dim seriliazer As JavaScriptSerializer = New JavaScriptSerializer
Dim p As RootObject = seriliazer.Deserialize(Of RootObject)(strJson)

しかし、エラーが発生します: Type 'SupportTopPayChannel' is not supported for an array of deserialization.

私を助けてください、どうもありがとう!!!!!

4

1 に答える 1

0

VBクラスの定義が正しくないようです。SupportedPayChannelListクラスには、リストとして宣言されていないプロパティがあります。以下のクラス定義を使用します(List(Ofを追加)を使用)。まだ持っていない場合は、ImportsSystem.Collections.Genericがあることを確認してください。

パブリッククラスSupportedPayChannelList
    Private _supportTopPayChannel As List(Of SupportTopPayChannel)
    パブリックプロパティsupportTopPayChannel()As List(Of SupportTopPayChannel)
        得る
            _supportTopPayChannelを返します
        Getを終了します
        Set(ByVal value As List(Of SupportTopPayChannel))
            _supportTopPayChannel = value
        エンドセット
    エンドプロパティ
エンドクラス
于 2012-08-10T20:07:38.457 に答える