使用JsonConvert.DeserializeObject反序列化JSON提取字段为空问题排查
问题原因
你的JSON结构根节点是包含adressen数组的对象,而你直接将其反序列化为Adres类,两者结构不匹配,所以返回空值。Adres类对应的是数组里的单个元素,而非整个JSON根对象。
解决方案
方案一:创建根类匹配JSON结构
先定义一个根类对应整个JSON的结构,反序列化后从数组中提取目标对象:
Public Class RootAdres Public Property adressen As List(Of Adres) End Class Public Class Adres Public Property openbareRuimteNaam As String Public Property woonplaatsNaam As String End Class
修改反序列化代码:
Dim root As RootAdres = JsonConvert.DeserializeObject(Of RootAdres)(json.last.value.ToString) Dim account As Adres = root.adressen.FirstOrDefault() ' 提取数组第一个元素
方案二:直接用JObject提取(无需额外类)
如果不想创建根类,可借助Newtonsoft.Json.Linq的JObject直接解析:
Dim jObj As JObject = JObject.Parse(json.last.value.ToString) Dim adresObj As JObject = jObj("adressen")(0) ' 获取数组第一个元素 Dim openbareRuimteNaam As String = adresObj("openbareRuimteNaam").ToString() Dim woonplaatsNaam As String = adresObj("woonplaatsNaam").ToString()
内容的提问来源于stack exchange,提问作者Knelis
相关产品推荐
相关产品推荐

