>백엔드 개발 >C++ >JsonConvert를 사용하여 JSON 역직렬화 중에 누락된 필드를 어떻게 감지할 수 있습니까?

JsonConvert를 사용하여 JSON 역직렬화 중에 누락된 필드를 어떻게 감지할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-19 05:50:09397검색

How Can I Detect Missing Fields During JSON Deserialization with JsonConvert?

JsonConvert를 사용하여 역직렬화 중 누락된 필드 감지

Json.NET의 JsonConvert 클래스를 사용하여 JSON 개체를 역직렬화할 때 데이터 무결성과 일관성을 보장하려면 누락된 필드를 처리하는 것이 중요합니다. 기본적으로 MissingMemberHandling은 Ignore로 설정되어 deserializer가 누락된 속성에 대한 기본값을 자동으로 반환하도록 합니다. 엄격한 유효성 검사를 수행하고 오류를 검색하려면 MissingMemberHandling을 Error로 설정하세요.

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

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

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

    class Program
    {
        const string correctData = @"{ 'MyJsonInt': 42 }";

        const string wrongData = @"{ 'SomeOtherProperty': 'fbe8c20b' }";

        static void Main()
        {
            try
            {
                JsonSerializerSettings settings = new JsonSerializerSettings()
                {
                    MissingMemberHandling = MissingMemberHandling.Error
                };

                var goodObj = JsonConvert.DeserializeObject<MyJsonObjView>(correctData, settings);
                Console.WriteLine(goodObj.MyJsonInt.ToString());

                var badObj = JsonConvert.DeserializeObject<MyJsonObjView>(wrongData, settings);
                Console.WriteLine(badObj.MyJsonInt.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.GetType().Name + ": " + ex.Message);
            }
        }
    }
}</code>

결과

MissingMemberHandling을 Error로 설정하면 JSON 데이터에 속성이 누락된 경우 JsonSerializationException이 발생합니다.

<code>42
JsonSerializationException: Could not find member 'SomeOtherProperty' on object
of type 'MyJsonObjView'. Path 'SomeOtherProperty', line 3, position 33.</code>

결론

Json.NET은 MissingMemberHandling을 오류로 구성하여 역직렬화 중에 정의된 클래스 구조를 엄격하게 준수하도록 합니다. 이는 누락된 필드로 인해 발생할 수 있는 데이터 손실이나 손상을 식별하고 방지하는 데 도움이 됩니다.

위 내용은 JsonConvert를 사용하여 JSON 역직렬화 중에 누락된 필드를 어떻게 감지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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