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

C#中Dictionary可见对应Key却无法访问,该如何排查解决?

问题根因定位

  • 核心触发原因:你调用data.Split('}')拆分用户条目时,若原返回数据末尾以}结尾,拆分后数组最后一个元素为空字符串,遍历到该空条目时生成的字典没有任何键,访问键时自然抛出不存在错误。你看到的Trace输出是前面有效条目的结果,报错实际是遍历到最后一个空条目时触发的。
  • 其他潜在原因:
    1. 你清洗数据时只移除了空格、{、",没有处理JSON中常见的换行、回车、制表符等不可见字符,导致字典的键实际携带了看不到的控制字符,和你输入的individualID不匹配。
    2. 拆分后的非首个individual条目开头可能携带多余逗号,导致键名前缀带逗号,无法匹配。
    3. 你测试键存在性时用的是全大写的INDIVIDUALID,和实际驼峰格式的键名不匹配,自然返回False。

修复方案

  1. 首先过滤空的拆分条目,遍历前先做空值判断:
foreach (var individual in guys)
{   
    // 新增:跳过空/空白条目
    if(string.IsNullOrWhiteSpace(individual)) continue;
    // 原有逻辑
}
  1. 完善字符清洗规则,把常见不可见字符加入移除列表:
var charsToRemove = new string[] { "{", "\"", " ", "\r", "\n", "\t"};
  1. 生成字典时对键值做Trim处理,消除残留的多余字符:
var uDict = individual.Split(',')
    .Select(part => part.Split(':'))
    .Where(part => part.Length == 2)
    .ToDictionary(sp => sp[0].Trim(), sp => sp[1].Trim());
  1. 长期优化建议:不要自行暴力拆分JSON字符串,只要返回值中出现逗号、冒号就会导致解析错误,建议使用System.Text.Json或Newtonsoft.Json等标准JSON解析库处理返回数据,稳定性更高。

内容的提问来源于stack exchange,提问作者Nathan Elkind

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:15:03