JSON.NET을 사용하여 JSON 데이터를 C#으로 역직렬화: 누락된 데이터를 적절하게 처리
C#에서 JSON 데이터로 작업할 때 JSON 구조에 C# 클래스에 정의된 특정 속성이 누락된 상황을 처리하는 것이 중요합니다. 전통적으로 JSON 개체에서 각 값을 수동으로 추출하는 작업은 지루하고 오류가 발생하기 쉽습니다.
다행히도 JSON.NET은 우아한 솔루션을 제공합니다. 구문 분석 중인 JSON 구조를 반영하는 C# 클래스를 생성하여 JsonConvert.DeserializeObject
메서드를 활용할 수 있습니다. 이 메서드는 JSON 속성을 클래스의 해당 속성에 자동으로 매핑합니다.
예를 들어 다음 JSON 데이터를 고려해 보세요.
<code class="language-json">{ "givenname": [ "Robert" ], "passwordexpired": "20091031041550Z", "accountstatus": [ "active" ], "accountstatusexpiration": [ "20100612000000Z" ], "accountstatusexpmaxdate": [ "20110410000000Z" ], "accountstatusmodifiedby": { "20100214173242Z": "tdecker", "20100304003242Z": "jsmith", "20100324103242Z": "jsmith", "20100325000005Z": "rjones", "20100326210634Z": "jsmith", "20100326211130Z": "jsmith" }, "accountstatusmodifytimestamp": [ "20100312001213Z" ], "affiliation": [ "Employee", "Contractor", "Staff" ], "affiliationmodifytimestamp": [ "20100312001213Z" ], "affiliationstatus": [ "detached" ], "entrycreatedate": [ "20000922072747Z" ], "username": [ "rjohnson" ], "primaryaffiliation": [ "Staff" ], "employeeid": [ "999777666" ], "sn": [ "Johnson" ] }</code>
및 해당 C# 클래스:
<code class="language-csharp">public class MyAccount { [JsonProperty(PropertyName = "username")] public string UserID { get; set; } [JsonProperty(PropertyName = "givenname")] public string GivenName { get; set; } [JsonProperty(PropertyName = "sn")] public string Surname { get; set; } [JsonProperty(PropertyName = "passwordexpired")] public DateTime PasswordExpire { get; set; } [JsonProperty(PropertyName = "primaryaffiliation")] public string PrimaryAffiliation { get; set; } [JsonProperty(PropertyName = "affiliation")] public string[] Affiliation { get; set; } [JsonProperty(PropertyName = "affiliationstatus")] public string AffiliationStatus { get; set; } [JsonProperty(PropertyName = "affiliationmodifytimestamp")] public DateTime AffiliationLastModified { get; set; } [JsonProperty(PropertyName = "employeeid")] public string EmployeeID { get; set; } [JsonProperty(PropertyName = "accountstatus")] public string AccountStatus { get; set; } [JsonProperty(PropertyName = "accountstatusexpiration")] public DateTime AccountStatusExpiration { get; set; } [JsonProperty(PropertyName = "accountstatusexpmaxdate")] public DateTime AccountStatusExpirationMaxDate { get; set; } [JsonProperty(PropertyName = "accountstatusmodifiedby")] public Dictionary<string, string> AccountStatusModifiedBy { get; set; } [JsonProperty(PropertyName = "accountstatusmodifytimestamp")] public DateTime AccountStatusModified { get; set; } [JsonProperty(PropertyName = "accountstatusexpnotice")] public string AccountStatusExpNotice { get; set; } [JsonProperty(PropertyName = "entrycreatedate")] public DateTime EntryCreatedate { get; set; } [JsonProperty(PropertyName = "entrydeactivationdate")] public DateTime EntryDeactivationDate { get; set; } }</code>
JsonConvert.DeserializeObject
메서드를 사용하면 JSON 데이터를 MyAccount
클래스의 인스턴스로 역직렬화할 수 있습니다.
<code class="language-csharp">var myAccount = JsonConvert.DeserializeObject<MyAccount>(jsonString);</code>
이렇게 하면 myAccount
의 속성이 JSON 데이터의 값으로 자동으로 채워집니다.
JSON 구조에 AccountStatusExpNotice
또는 EntryDeactivationDate
등 일부 속성이 누락된 경우에도 역직렬화 프로세스는 원활하게 진행되며 C# 클래스의 해당 속성은 기본값으로 설정됩니다. 이 접근 방식을 사용하면 복잡한 조건 확인이나 수동 값 할당이 필요 없어 데이터 변환 프로세스가 단순화됩니다.
위 내용은 JSON.NET을 사용하여 JSON을 C#에 실시 할 때 누락 된 데이터를 어떻게 우아하게 처리 할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!