首页 > 后端开发 > C++ > 如何使用 JsonConvert.DeserializeObject 将 JSON 数组反序列化为 C# 集合?

如何使用 JsonConvert.DeserializeObject 将 JSON 数组反序列化为 C# 集合?

Patricia Arquette
发布: 2025-01-15 08:55:45
原创
978 人浏览过

How to Deserialize JSON Arrays into C# Collections Using JsonConvert.DeserializeObject?

使用JsonConvert.DeserializeObject将JSON反序列化到C# POCO类

JsonConvert.DeserializeObject是将JSON数据转换为C#对象的有力工具。但是,当尝试将JSON反序列化到包含集合或嵌套对象的POCO(普通旧CLR对象)类时,可能会发生错误。

使用JsonConvert.DeserializeObject时遇到的一个常见问题是无法将JSON数组反序列化为强类型集合。此错误源于JSON数组和.NET集合结构的根本区别。

问题识别:数组与对象

在提供的代码片段中,Accounts属性声明为List,期望接收表示用户帐户的JSON对象的数组。但是,JSON响应包含单个对象,其中包含多个键值对,每个键值对都代表一个关联帐户。这种不匹配会导致“JsonObjectAttribute也可以添加到类型以强制它从JSON对象反序列化”错误。

解决方法:使用自定义类和JsonProperty属性

要解决此问题,必须定义一个自定义类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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板