Visual Basic使用Newtonsoft.Json提取JSON内file_id字段值问题咨询
代码调整方案
核心原因
你获取到的files节点是数组类型,不能直接提取下级字段,需要先定位到数组内的具体元素,再读取file_id值。
调整后代码示例
场景1:提取所有file_id存入集合
Dim json As String = ModLinkData(n) Dim read = Newtonsoft.Json.Linq.JObject.Parse(json) ' 读取files数组 Dim filesArray As Newtonsoft.Json.Linq.JArray = read("files") Dim fileIdList As New List(Of Integer) ' 遍历数组逐个提取file_id For Each fileItem As Newtonsoft.Json.Linq.JObject In filesArray Dim fileId = fileItem("file_id").Value(Of Integer)() fileIdList.Add(fileId) ' 如果需要字符串格式,直接调用 fileId.ToString() 即可 Next
场景2:直接获取指定位置的file_id
如果只需要数组第一个元素的file_id,可直接用索引定位:
Dim firstFileId = read("files")(0)("file_id").Value(Of Integer)().ToString()
场景3:筛选特定条件的file_id
比如提取标记为主版本(is_primary = true)的file_id:
Dim primaryFileId = read("files") _ .Where(Function(f) f("is_primary").Value(Of Boolean) = True) _ .Select(Function(f) f("file_id").Value(Of Integer)()) _ .FirstOrDefault()
补充说明
如果要避免字段缺失、类型不匹配导致的报错,可以在提取前增加判空逻辑,比如先判断fileItem("file_id")是否不为Nothing再取值。
内容的提问来源于stack exchange,提问作者Buddster124
相关产品推荐
相关产品推荐

