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

如何用C#从JSON字符串数组提取单个值?代码报错求助

如何用C#从指定JSON中提取"file_1.txt"

你的两种实现都因为JSON节点路径错误导致空引用异常:

  • 动态反序列化时,filenames是嵌套在value节点下的,直接访问myCustomclassname.filenames会找不到对应节点,返回null
  • JObject解析时,直接从根节点查找filenames,但该节点实际在value子节点内,导致filenamesToken为null,调用ToString()触发空引用

以下是三种正确的实现方式:

方法1:修正动态反序列化

var jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
// 按层级访问:先取value节点,再访问其下的filenames数组
var targetFile = jsonObj.value.filenames[0];
// 输出结果:file_1.txt

方法2:修正JObject解析

JObject data = JObject.Parse(json);
// 先定位到value节点,再获取filenames数组
JToken filenamesToken = data["value"]["filenames"];
List<string> filenames = filenamesToken.ToObject<List<string>>();
var targetFile = filenames[0];
// 输出结果:file_1.txt

方法3:强类型反序列化(推荐,类型安全)

先定义与JSON结构匹配的实体类:

public class Root
{
    public Value Value { get; set; }
}

public class Value
{
    public List<string> Filenames { get; set; }
}

然后执行反序列化并提取目标值:

var rootObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(json);
var targetFile = rootObj.Value.Filenames[0];
// 输出结果:file_1.txt

内容的提问来源于stack exchange,提问作者Mike Johnston

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:32:38