【发布时间】:2021-09-24 01:16:37
【问题描述】:
我已尽力将其分解。
这是我对每一行功能的最佳解释的相关代码。
public static string DetailCall()
{
//Call original API POST Method to get Data
string data = BlocCall();
//Clean Data by removing extra characters
var charsToRemove = new string[] { "{", "\"", " "};
foreach (var c in charsToRemove)
{
data = data.Replace(c, string.Empty);
}
//Split string of data into an array of data by individual
string[] guys = data.Split('}');
//Do stuff with each persons data
foreach (var individual in guys)
{
//Split Data into key value pairs and add to Dictionary
var uDict = individual.Split(',').Select(part => part.Split(':')).Where(part => part.Length == 2).ToDictionary(sp => sp[0], sp => sp[1]);
//Turn the Dictionary back into a string for testing purposes
var s_uDict = String.Join(",", uDict.Select(kvp => String.Format("{0}={1}", kvp.Key, kvp.Value)));
Trace.WriteLine(s_uDict);
Trace.WriteLine("Exist key " + uDict.ContainsKey("INDIVIDUALID"));
}
}
我使用 Trace.WriteLine 进行了一些调试,这是控制台中的(由于 hippa 原因而更改)输出。它将字典的内容显示为字符串,我可以清楚地看到存在哪些键和值。
个人ID=-----,
名字=--------,
中间首字母=,
姓氏=--------,
电子邮件=--------@gmail.com,
ssn=,
状态=01.FreshLead,
类型=,
homePhone=(---)--------,
业务电话=,
手机=
存在键 False
但是每当我尝试使用访问数据时
var cliID = uDict["individualID"];
我得到了“individualID”键不存在的错误,即使我可以在输出中看到它存在??
我也尝试了其他键值并得到相同的结果。
在这一点上我很困惑,希望有人能帮我解决这个问题。
感谢您的宝贵时间。
【问题讨论】:
-
你能显示你的字符串数据吗?
-
@Serge 如果 OP 显示示例数据,则无法按要求回答问题 - 如果您查看代码的清理部分,您可以看到原始数据是 JSON 并且所有结构都被剥离与
string.Replace。这将在类似的评论风暴中结束,就好像一个人试图用 RegEx 解析 HTML...(如果 OP 实际上提供了 minimal reproducible example 内联数据,那就太好了)
标签: c# api dictionary key-value