如何在C#中从API调用结果中获取指定字段值?
问题分析与解决方案
你的代码存在三个关键问题导致异常或逻辑错误:
- 循环内仅定义了变量但未将结果添加到目标列表,最终返回空集合
- 代码存在语法错误:
string str = item["Name"].ToString() + ";"末尾缺少分号 - 未做空值校验,若JSON对象无
Name字段,调用ToString()会触发空引用异常
修正后的基础实现
var a = JArray.Parse(data); List<string> resultList = new List<string>(); foreach (var item in a) { // 先校验字段是否存在且非空,避免空引用异常 if (item["Name"] != null) { string name = item["Name"].ToString(); resultList.Add(name); } } return resultList;
更简洁的LINQ实现
利用LINQ可以简化代码,同时保留空值校验:
var a = JArray.Parse(data); List<string> resultList = a // 空传播运算符安全获取Name值,避免空引用 .Select(item => item["Name"]?.ToString()) // 过滤掉空或空字符串的无效项 .Where(name => !string.IsNullOrEmpty(name)) .ToList(); return resultList;
如果你的实际需求是生成分号分隔的名称字符串(而非列表),可以在得到列表后拼接:
string nameStr = string.Join(";", resultList);
内容的提问来源于stack exchange,提问作者Natalie
相关产品推荐
相关产品推荐

