【问题标题】:How do you deserialize this JSON object into a vb.net object?您如何将此 JSON 对象反序列化为 vb.net 对象?
【发布时间】:2015-02-18 15:09:40
【问题描述】:

我正在使用 JSon.net 反序列化从 GravityForms Web API 获取的 json 对象。

我得到的json是这个……

{"status":200,"response":{
                "12":{"id":"12","title":"Test Form","entries":"1"},
                "1":{"id":"1","title":"What's My Home Worth?","entries":"92"}
            }
}

我要反序列化的 VB.net 对象是

  Namespace Forms
        Public Class GFForm
            Public Property id As String
            Public Property title As String
            Public Property entries As String
        End Class

        Public Class Response
            <JsonProperty("1")>
            Public Property GFForms() As GFForm
        End Class

        Public Class TopLevel
            Public Property status As Integer
            Public Property response As Response
        End Class
    End Namespace

我正在执行这样的 JsonConvert 语句..

            Dim obj As GravityForms.Forms.TopLevel
            obj = JsonConvert.DeserializeObject(Of GravityForms.Forms.TopLevel)(str)

似乎成功地将 json 反序列化为我的 vb 对象,但我只得到 1 个响应对象。我应该得到其中的 2 个吧?

奇怪的是,我得到的 GFForm 是第二个 (ID:1),这使得它看起来像是在写入第一个对象 (ID:12) 的值。

任何帮助都会很棒,因为我在 2 天的大部分时间里一直在搞砸这个,我迷路了。

编辑:

这在我上面的问题中并不清楚。我不知道从 Web 服务返回的 GFForm 对象的数量。它可以是 2(如示例中所示),也可以是 32 或 45 或其他任何值。

我想将 GFForm 对象放在我可以绑定到 datagridview 的东西中

【问题讨论】:

    标签: json vb.net serialization webforms


    【解决方案1】:

    您的响应中有两个 GFForm 属性,但一个 Response 对象需要填充一个属性。也许你应该尝试使用类似的东西

    Namespace Forms
        Public Class GFForm
            Public Property id As String
            Public Property title As String
            Public Property entries As String
        End Class
    
        Public Class Response
            <JsonProperty("1")>
            Public Property GFForms1 As GFForm
            Public Property GFForms12 As GFForm
        End Class
    
        Public Class TopLevel
            Public Property status As Integer
            Public Property response As Response
        End Class
    End Namespace
    

    编辑:如果您不知道响应属性的数量,请尝试为每个属性创建一个新的 Response 对象。

    【讨论】:

    • 感谢您对 Panayotis 的反馈!这确实有效,但我的问题是我不知道在 Json 对象中返回的 GFForms 的数量。可能是 2 可能是 32。我将把它添加到我的问题中,因为不清楚。再次感谢
    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多