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 和我正在尝试匹配的类以将 json 转换为我的tableT对象

Jsonconvert我得到空对象之后,你能告诉我我的课程有什么问题吗?我正在使用 vb.net 和 .net 2。所以我想我的问题是如何将我的 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 正在做的是期望类中有名为 0、1、2 和 3 的 Rows 类型的属性,这在 VB 中是不可能的,而且我敢肯定,这不是您想要完成的。

您可以通过向 tableT 添加类型为 Rows 的零、一、二和三的属性来验证这一点:

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 回答