You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:48:05