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

C# 将object类型数组字符串转List<string> 解决转换返回null问题

错误原因分析

  1. 直接强转(List<string>)value失败:只有value的运行时类型本身就是List<string>时才会成功。你打印出的{["Temp", "Humidity"]}格式明显是JSON数组类的实例(最常见为Newtonsoft.Json的JArray类型,或System.Text.Json的JsonElement数组类型),不是原生List<string>,所以强转失败。
  2. value.OfType<List<string>>().ToList()用法错误:OfType<T>是IEnumerable接口的扩展方法,作用是筛选集合中类型为T的元素,而非将整个集合转换为T类型。且如果value没有实现IEnumerable接口,该调用本身就不生效。

正确转换方案

场景1:value为Newtonsoft.Json的JArray类型(最常见场景,匹配你给出的打印格式)

// 先转成JArray,再调用内置的序列化方法转List<string>
var jArray = value as Newtonsoft.Json.Linq.JArray;
List<string> res = jArray?.ToObject<List<string>>();

场景2:value为任意实现了IEnumerable接口的字符串集合(比如string数组、ArrayList、其他自定义集合)

// 先转成可枚举类型,遍历每个元素转string后生成List
var enumerable = value as System.Collections.IEnumerable;
List<string> res = enumerable?.Cast<object>()
                              .Select(x => x?.ToString())
                              .ToList();

场景3:value是原始JSON字符串

如果你的value是存了["Temp","Humidity"]的字符串,直接用JSON反序列化即可:

// Newtonsoft.Json写法
List<string> res = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(value.ToString());

// System.Text.Json写法
List<string> res = System.Text.Json.JsonSerializer.Deserialize<List<string>>(value.ToString());

内容的提问来源于stack exchange,提问作者tu pham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:45:04