>백엔드 개발 >C++ >JsonConvert.DeserializeObject를 사용하여 JSON 배열을 C# 컬렉션으로 역직렬화하는 방법은 무엇입니까?

JsonConvert.DeserializeObject를 사용하여 JSON 배열을 C# 컬렉션으로 역직렬화하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-15 08:55:45971검색

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

JsonConvert.DeserializeObject를 사용하여 JSON을 C# POCO 클래스로 역직렬화

JsonConvert.DeserializeObject는 JSON 데이터를 C# 개체로 변환하는 강력한 도구입니다. 그러나 JSON을 컬렉션이나 중첩 개체가 포함된 POCO(Plain Old CLR Object) 클래스로 역직렬화하려고 하면 오류가 발생할 수 있습니다.

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 응답을 해당 관련 계정으로 채워진 Accounts 속성을 포함하여 강력한 형식의 User 객체로 쉽게 역직렬화할 수 있습니다.

위 내용은 JsonConvert.DeserializeObject를 사용하여 JSON 배열을 C# 컬렉션으로 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.