JSON:
{
"status": "OK",
"maximum_reached": 0,
"top_domain": {
"dont_show": 1
},
"free_domains": [
{
"status": "AVAILABLE",
"domain": "go",
"tld": ".tk",
"currency": "USD",
"type": "SPECIAL",
"price_int": "1000",
"price_cent": "00",
"show_top_domain": 0,
"is_in_cart": 0
},
]
}
VB.NET代码:
Dim jsonObj As JObject = JObject.Parse(hr.Html)
If IsNothing(jsonObj.[Property]("free_domains")(0)("status")) Then
End If
错误:
无法访问Newtonsoft.Json.Linq.JProperty
上的子值
如何检查属性是否存在以确保在错误不可用时触发错误?
答案 0 :(得分:0)
free_domains
中存在名为jsonObj
的属性,如果您检查jsonObj.[Property]("free_domains")
的返回值,则它确实包含适当的对象。
关键是jsonObj.[Property]("free_domains")
返回类型为JProperty
的对象,它是属性描述符。此描述符不直接表示属性值。要访问此值,请使用JProperty.Value
:
jsonObj.[Property]("free_domains").Value(0)("status")
但是,有一种更简单的方法来访问该值。使用jsonObj
:
jsonObj("free_domains")(0)("status")
要检查属性是否存在,请检查字符串索引器返回的值是否不是Nothing
。当访问层次结构中的一系列属性时,空条件运算符可能很方便:
If IsNothing(jsonObj("free_domains")?(0)?("status")) Then
End If