我尝试从以下json结果的基本部分中获取值
{
"responseCode": "Ok",
"responseMessage": "",
"ssnStatus": "Active",
"basic": {
"firstName": "Testnamn",
"givenName": "Gettnamn",
"surName": "Testname",
"middleName": null,
"lastName": "Lastname",
"co": null,
"street": "Teststreet lgh 1202",
"zipCode": "92609",
"city": "Stad"
},
"phoneNumbers": {
"phoneNumbers": []
},
"ssnStatusBlock": null
}
我可以使用下面的代码获取第一级(ssnStatus),但是如何获取firstName,givenName等?
Dim post As Post = JsonConvert.DeserializeObject(Of Post)(exampleJson)
Dim ssnStatus As String = post.ssnStatus
和
Public Class Post
Public Property ssnStatus As String
End Class
答案 0 :(得分:0)
您缺少JSON对象的所有其他成员的属性和类定义。
JSON
用法的名称Imports Newtonsoft.Json
导入JSON
结构的JSON
对象的示例(这里有一个很好的对象),Edit -> Paste Special -> Paste JSON as classes
Visual Studio将创建处理您选择的JSON对象所需的所有类和属性。
注意:对于更复杂的类,可能会发生Visual Studio生成的结果与您要求的不完全相同的情况。在这种情况下,请尝试提供免费转换服务的专业网站之一:
新的根类定义将命名为Rootobject
。根据需要更改此名称,
为了更清楚地说明该类的用途。
这是Visual Studio使用问题中的JSON
对象创建的类定义。
我创建了一个名为MyWebSitePost
的类Project类,并按照前面的描述创建了JSON
bject类定义,然后重命名了默认的主类Post
,替换了默认的Rootobject
名称:
Public Class MyWebSitePost
Public Class Post
Public Property responseCode As String
Public Property responseMessage As String
Public Property ssnStatus As String
Public Property basic As Basic
Public Property phoneNumbers As Phonenumbers
Public Property ssnStatusBlock As Object
End Class
Public Class Basic
Public Property firstName As String
Public Property givenName As String
Public Property surName As String
Public Property middleName As Object
Public Property lastName As String
Public Property co As Object
Public Property street As String
Public Property zipCode As String
Public Property city As String
End Class
Public Class Phonenumbers
Public Property phoneNumbers() As Object
End Class
End Class
然后,您可以使用已经拥有的代码来访问所有其他属性:
(某些属性类型可能已设置为
Object
;修改为 需要)。
Dim JsonPost As Post = JsonConvert.DeserializeObject(Of Post)(exampleJson)
Dim ssnStatus As String = JsonPost.ssnStatus
Dim FirstName As String = JsonPost.basic.firstName
以此类推。
注意:
如您所见,所有属性都有默认名称,如JSON
对象中所定义。一些属性名称并不是真正适合描述其内容。例如,co
属性可能是Country
名称。要更改属性名称,可以使用<JsonProperty>
属性,该属性引用JSON
对象的原始名称,并为属性使用自定义名称:
'(...)
<JsonProperty("co")>
Public Property Country As Object
'(...)
然后您可以使用自定义名称访问此属性:
Dim CountryName As String = JsonPost.basic.Country