> 백엔드 개발 > C++ > 역직렬화 중에 누락된 필드에 대해 Json.NET에서 예외를 발생시키려면 어떻게 해야 합니까?

역직렬화 중에 누락된 필드에 대해 Json.NET에서 예외를 발생시키려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2025-01-19 05:59:10
원래의
680명이 탐색했습니다.

How Can I Make Json.NET Throw Exceptions for Missing Fields During Deserialization?

Json.NET을 사용하여 JSON 역직렬화 중 누락된 필드 감지

JSON 역직렬화에서는 누락된 필드를 처리하는 것이 중요합니다. 기본적으로 Json.NET의 직렬 변환기는 누락된 필드가 발견되면 자동으로 기본값을 반환합니다. 이 동작으로 인해 잘못된 속성이 있는 개체를 역직렬화할 때 감지되지 않은 오류가 발생할 수 있습니다.

질문:

필드가 누락된 객체를 역직렬화할 때 Json.NET 직렬 변환기가 예외를 발생시키지 않는 문제가 발생합니다. 대신 기본값을 반환하므로 잘못된 데이터를 감지하기 어렵습니다.

해결책:

Json.NET은 구성 가능한 MissingMemberHandling 설정을 제공합니다. Error으로 설정하면 역직렬화 중에 누락된 필드가 발견될 때 JsonSerializationException를 발생시키도록 직렬 변환기에 지시합니다. 이렇게 하면 코드에서 이러한 오류를 명시적으로 처리할 수 있습니다.

코드:

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

try
{
    // 读取JSON字符串
    const string correctData = @"{ 'MyJsonInt': 42 }";
    const string wrongData = @"{ 'SomeOtherProperty': 'fbe8c20b' }";

    // 创建序列化器设置
    JsonSerializerSettings settings = new JsonSerializerSettings();
    settings.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>
로그인 후 복사

출력:

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

MissingMemberHandlingError으로 설정하면 직렬 변환기가 누락된 필드가 있는 객체에 대해 JsonSerializationException을 발생시켜 오류를 처리하고 데이터 무결성을 보장할 수 있습니다.

위 내용은 역직렬화 중에 누락된 필드에 대해 Json.NET에서 예외를 발생시키려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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