JsonConvert.DeserializeObject是将JSON数据转换为C#对象的有力工具。但是,当尝试将JSON反序列化到包含集合或嵌套对象的POCO(普通旧CLR对象)类时,可能会发生错误。
使用JsonConvert.DeserializeObject时遇到的一个常见问题是无法将JSON数组反序列化为强类型集合。此错误源于JSON数组和.NET集合结构的根本区别。
在提供的代码片段中,Accounts属性声明为List
要解决此问题,必须定义一个自定义类Account来表示各个帐户,并使用[JsonProperty]属性注释Accounts属性以指定JSON响应中相应的属性名称:
<code class="language-csharp">public class Account { public string github; } [JsonProperty("accounts")] public Account Accounts { get; set; }</code>
此外,可以在User类中使用JsonProperty属性来明确地将属性绑定到它们各自的JSON属性名称,从而确保无缝映射:
<code class="language-csharp">[JsonProperty("username")] public string Username { get; set; } [JsonProperty("name")] public string Name { get; set; } [JsonProperty("location")] public string Location { get; set; }</code>
实施这些更改后,JsonConvert.DeserializeObject可以轻松地将JSON响应反序列化为强类型User对象,包括使用相应的关联帐户填充的Accounts属性。
以上是如何使用 JsonConvert.DeserializeObject 将 JSON 数组反序列化为 C# 集合?的详细内容。更多信息请关注PHP中文网其他相关文章!