> 백엔드 개발 > C++ > Json.NET에서 JSON 역직렬화 중에 누락된 필드를 처리하는 방법은 무엇입니까?

Json.NET에서 JSON 역직렬화 중에 누락된 필드를 처리하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-19 05:44:12
원래의
421명이 탐색했습니다.

How to Handle Missing Fields During JSON Deserialization in Json.NET?

Json.NET에서 JSON 역직렬화 중 누락된 필드를 처리하는 방법

Json.NET을 사용하여 JSON 개체를 역직렬화할 때 누락된 필드를 올바르게 처리하는 것이 중요합니다. 기본적으로 Json.NET은 누락된 속성을 무시하고 기본값을 반환하므로 후속 처리 중에 오류가 발생할 수 있습니다.

다음 코드를 고려해보세요.

<code class="language-csharp">using Newtonsoft.Json;

namespace Json_Fail_Test
{
    [JsonObject(MemberSerialization.OptOut)]
    private class MyJsonObjView
    {
        [JsonProperty("MyJsonInt")]
        public int MyJsonInt { get; set; }
    }

    static void Main(string[] args)
    {
        string correctData = @"{'MyJsonInt': 42}";
        string wrongData = @"{'SomeOtherProperty': 'fbe8c20b'}";

        var goodObj = JsonConvert.DeserializeObject<MyJsonObjView>(correctData);
        var badObj = JsonConvert.DeserializeObject<MyJsonObjView>(wrongData);

        Console.WriteLine(goodObj.MyJsonInt); // 输出 42
        Console.WriteLine(badObj.MyJsonInt); // 输出 0
    }
}</code>
로그인 후 복사

이 코드는 JSON 개체를 MyJsonObjView 개체로 역직렬화하려고 시도합니다. 올바른 JSON에는 "MyJsonInt" 속성이 포함되어 있지만 잘못된 JSON에는 포함되어 있지 않습니다. 출력은 다음과 같습니다.

<code>42
0</code>
로그인 후 복사

보시다시피 잘못된 JSON을 역직렬화하면 코드가 자동으로 실패하고 누락된 속성에 대한 기본값을 반환합니다. 이러한 동작을 방지하려면 MissingMemberHandling 설정을 사용할 수 있습니다.

<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings();
settings.MissingMemberHandling = MissingMemberHandling.Error;</code>
로그인 후 복사

MissingMemberHandlingError으로 설정하면 역직렬화 중에 누락된 속성이 발견될 때 Json.NET에서 예외를 발생시키도록 지시합니다.

<code class="language-csharp">try
{
    var goodObj = JsonConvert.DeserializeObject<MyJsonObjView>(correctData, settings);
    var badObj = JsonConvert.DeserializeObject<MyJsonObjView>(wrongData, settings);
}
catch (Exception ex)
{
    Console.WriteLine(ex.GetType().Name + ": " + ex.Message);
}</code>
로그인 후 복사

이제 잘못된 JSON을 역직렬화하면 예외가 발생합니다.

<code>JsonSerializationException: Could not find member 'SomeOtherProperty' on object
of type 'MyJsonObjView'. Path 'SomeOtherProperty', line 3, position 33.</code>
로그인 후 복사

이 예외는 속성 누락으로 인해 역직렬화가 실패했음을 명확히 나타내므로 오류를 적절하게 처리할 수 있습니다.

MissingMemberHandling 속성을 ​​설정하면 누락된 JSON 속성을 처리할 때 Json.NET의 동작을 보다 효과적으로 제어할 수 있으므로 잠재적인 오류를 방지하고 코드의 견고성을 향상시킬 수 있습니다.

위 내용은 Json.NET에서 JSON 역직렬화 중에 누락된 필드를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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