1

jqueryがhtmlテーブルをループしてオブジェクトに入れ、JSON.stringifyそのjavascriptオブジェクトをjsonに変換するために使用しています。以下のjsonを参照してください。

{
"0":{"name":"fdgd","surname":"ssdt"},
"1":{"name":"fdsf","surname":"vn"},
"2":{"name":"dfsb","surname":"mry"},
"3":{"name":"hsdsdfry","surname":"smh"}
}

私の問題はJSON.netにあり、クラスimはjsonを私のtableTオブジェクトに変換するためにそれと一致させようとしています

空のオブジェクトを取得した後Jsonconvert、クラスの何が問題になっているのか教えてください。私はvb.netと.net2を使用しています。それで、私の質問は、tableTクラスをjson文字列にどのように一致させるかということだと思います。お手伝いありがとう。

Dim tableOBJ As tableT = JsonConvert.DeserializeObject(Of tableT)(myJSON)


Public Class tableT

    Private _allRows As List(Of Rows)

    Property AllRows As List(Of Rows)
        Get
            Return _allRows
        End Get
        Set(ByVal value As List(Of Rows))
            _allRows = value
        End Set
    End Property

End Class

Public Class Rows

    Private _name As String
    Private _surname As String

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

    Property surname As String
        Get
            Return _surname
        End Get
        Set(ByVal value As String)
            _surname = value
        End Set
    End Property

End Class
4

1 に答える 1

2

それをテストせずに、

JsonConvert.DeserializeObject(Of tableT)(myJSON)

本当にもっと似ているはずです

JsonConvert.DeserializeObject(Of List(Of Rows))(myJSON)

JsonConvertがAllRowsオブジェクトの行が必要であることを知る方法がないためです。

したがって、コードは次のようになります。

Dim tableOBJ As New tableT 
tableOBJ.AllRows = JsonConvert.DeserializeObject(Of List(Of Rows))(myJSON)

** 編集 **

これをテストした後、Json配列がどのように見えるかを理解しているように、Json文字列を変更することによってのみこれを機能させることができました。

具体的には、配列を次のように変更した場合:

{"AllRows": [
{"name":"fdgd","surname":"ssdt"},
{"name":"fdsf","surname":"vn"},
{"name":"dfsb","surname":"mry"},
{"name":"hsdsdfry","surname":"smh"}
]}

その後、元のコードは正しく機能します。

元のJsonが行っていることは、Rows型の0、1、2、および3というクラスにプロパティがあることを期待しています。これは、VBでは不可能であり、確かに、あなたが達成しようとしていることではありません。

これを確認するには、RowsタイプのZero、One、Two、およびThreeのプロパティをtableTに追加します。

Public Class tableT

    Public Zero As New Rows
    Public One As New Rows
    Public Two As New Rows
    Public Three As New Rows

jsonを次のように変更します。

{
"Zero":{"name":"fdgd","surname":"ssdt"},
"One":{"name":"fdsf","surname":"vn"},
"Two":{"name":"dfsb","surname":"mry"},
"Three":{"name":"hsdsdfry","surname":"smh"}
}

元のクラスを使用して逆シリアル化します。次に、新しいプロパティにjson文字列の内容が入力されていることがわかります。

于 2012-08-01T18:43:30.287 に答える