从newtonsoft json访问VB.net中的嵌套对象

时间:2016-08-14 17:52:39

标签: vb.net json.net

首先,如果已经发布,请道歉。我花了一些时间研究,但没有找到解决方案。

我的目标是从vb.net中的各种JSON响应访问Web请求。我遇到嵌套响应问题;一个例子:

Dim JSON as string = '{"url2": {"href": "https://example.com/test2/"}}'

我有这样的课程:

Public Class test1
    Public Class url2
        Public href As String
    End Class
End Class

反序列化JSON:

Dim objURL1 As test1 = Newtonsoft.Json.JsonConvert.DeserializeObject(Of test1)(JSON)

这似乎工作正常,但我根本不知道如何访问href值,这是" https://example.com/test2/"在这个例子中。

1 个答案:

答案 0 :(得分:0)

您混淆了两个概念:Nesting of .Net typesaggregation of instances of .Net objects。 (后者链接用于c#,但也适用于VB.NET。)

你想要的是包含聚合,如下所示:

Public Class Url2
    Public Property href As String
End Class

Public Class Test1
    Public Property url2 as Url2
End Class

然后访问href值do:

Dim objURL1 = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Test1)(JSON)
dim href = objURL1.url2.href

示例fiddle

有关.Net中嵌套类型的更多背景信息,请参阅Why/when should you use nested classes in .net? Or shouldn't you?。如果您来自Java,请参阅What are the fundamental differences between Java and C# in terms of inner/local/anonymous classes?,其中解释了.net嵌套类型与Java内部类不同。