JsonConvert.DeserializeObject를 사용하여 JSON을 C# POCO 클래스로 구문 분석
JSON을 C# POCO 클래스로 역직렬화할 때 오류(예: "역직렬화할 수 없습니다..." 예외)가 발생하는 경우 성공적인 역직렬화를 위한 요구 사항을 이해하는 것이 중요합니다.
구체적으로 JsonConvert.DeserializeObject
메서드를 사용하려면 JSON이 POCO 클래스에 정의된 예상 구조 및 데이터 유형을 준수해야 합니다.
오류 해결
이 오류를 해결하는 열쇠는 두 가지 측면에 있습니다.
목록 속성을 올바르게 선언하세요.
JSON 응답에 POCO 클래스에서 List<T>
으로 선언된 속성에 대한 개체 배열이 포함되어 있는지 확인하세요. 예:
<code class="language-json"> { "username": "username", // ... 其他属性 "accounts": [ { "github": "github-username" }, // ... 其他帐户 ] }</code>
POCO 클래스에서 Accounts
속성은 다음과 같이 선언되어야 합니다.
<code class="language-csharp"> [JsonProperty("accounts")] public List<Account> Accounts { get; set; }</code>
JsonProperty 속성 사용:
JsonProperty
속성은 JSON 속성 이름을 해당 POCO 클래스 속성에 매핑합니다. 기본적으로 JSON 속성 이름은 대/소문자를 구분하며 C# 속성 이름과 일치합니다. 이 매핑을 사용자 정의하려면 JsonProperty
속성을 사용하세요:
<code class="language-csharp"> [JsonProperty("github")] public string GithubUsername { get; set; }</code>
예
수정된 예는 다음과 같습니다.
<code class="language-csharp">public class User { [JsonProperty("username")] public string Username { get; set; } // ... 其他属性 [JsonProperty("accounts")] public List<Account> Accounts { get; set; } } public class Account { [JsonProperty("github")] public string GithubUsername { get; set; } } // 反序列化代码 var json = @"{ 'username': 'jdoe', // ... 其他属性 'accounts': [{ 'github': 'jdoe-github' }] }"; var user = JsonConvert.DeserializeObject<User>(json);</code>
위 내용은 JsonConvert.DeserializeObject를 사용하여 JSON을 C# POCO 클래스로 성공적으로 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!