在C# RestSharp中如何将JSON响应转换为List集合
问题原因
你的写法存在两个核心错误:
- JSON结构中
emails是数组类型,不能直接对数组用["value"]取单个属性,且你要反序列化的目标是emails数组整体,不是单个value字段 - 若你的
Job类和emails数组内的对象结构不匹配,反序列化也会失败
解决步骤
1. 定义和JSON结构匹配的模型类
根据你给出的JSON结构,先定义对应的C#类:
// 对应emails下的sources数组内的对象 public class Source { public string domain { get; set; } public string uri { get; set; } public string extracted_on { get; set; } public string last_seen_on { get; set; } public bool still_on_page { get; set; } } // 对应emails下的verification对象 public class Verification { public string date { get; set; } public string status { get; set; } } // 对应emails数组内的单个对象 public class EmailItem { public string value { get; set; } public string type { get; set; } public int confidence { get; set; } public List<Source> sources { get; set; } public string first_name { get; set; } public string last_name { get; set; } public string position { get; set; } public string seniority { get; set; } public string department { get; set; } public string linkedin { get; set; } public string twitter { get; set; } public string phone_number { get; set; } public Verification verification { get; set; } }
2. 正确执行反序列化
你需要先取到emails数组的完整JSON内容,再反序列化为List<EmailItem>:
// 先获取emails数组的JSON字符串 string emailsJson = jsonResponse["data"]["emails"].ToString(); // 反序列化为EmailItem集合 List<EmailItem> emailList = JsonConvert.DeserializeObject<List<EmailItem>>(emailsJson);
如果你只需要所有邮箱的value值组成的列表,可以在反序列化后再提取:
List<string> emailValueList = emailList.Select(e => e.value).ToList();
内容的提问来源于stack exchange,提问作者Smita Raj
相关产品推荐
相关产品推荐

