> 백엔드 개발 > C++ > JSON.NET을 사용하여 JSON을 C#에 실시 할 때 누락 된 데이터를 어떻게 우아하게 처리 할 수 ​​있습니까?

JSON.NET을 사용하여 JSON을 C#에 실시 할 때 누락 된 데이터를 어떻게 우아하게 처리 할 수 ​​있습니까?

Susan Sarandon
풀어 주다: 2025-01-26 16:36:11
원래의
929명이 탐색했습니다.

How can I gracefully handle missing data when deserializing JSON to C# using JSON.NET?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿