VB.NET中JSON反序列化失败求助(需提取Select_Store字段)
问题分析与解决方案
我一眼就看出问题的核心了——你的类结构和JSON响应的键完全不匹配,这才导致反序列化失败,哪怕你加了所有字段也没用,因为顶级数组的名称就对不上!
具体问题点
- JSON里的顶级数组键是
Store_Money_Snapshot,但你的RootObject类里对应的属性是Zoho_List,反序列化器根本找不到对应的匹配项。 - 另外,其实你只需要提取
Select_Store字段,完全没必要把JSON里的所有字段都加到类里,Json.NET会自动忽略那些没定义的字段。
修正后的代码
首先调整你的类结构,让属性名称和JSON的键对应上:
Public Class ZohoList Public Property Select_Store As String End Class Public Class RootObject Public Property Store_Money_Snapshot As List(Of ZohoList) End Class
注:这里我简化了属性的写法,VB.NET支持自动属性,不用手动写Get/Set和私有字段,更简洁。
然后修改你的反序列化代码,对应调整属性名称:
' 反序列化JSON响应 Dim myO = JsonConvert.DeserializeObject(Of RootObject)(response) ' 获取对应的列表 Dim items = myO.Store_Money_Snapshot ' 遍历提取Select_Store值 For Each item In items lTodo.Add(item.Select_Store.ToString) ' 后续代码 Next
这样修改后,反序列化就能正常工作了,因为类的属性名称和JSON的键完全匹配,而且只保留了你需要的字段,代码更简洁高效。
内容的提问来源于stack exchange,提问作者PyDeveloper
相关产品推荐
相关产品推荐

