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>
MissingMemberHandling
을 Error
으로 설정하면 직렬 변환기가 누락된 필드가 있는 객체에 대해 JsonSerializationException
을 발생시켜 오류를 처리하고 데이터 무결성을 보장할 수 있습니다.
위 내용은 역직렬화 중에 누락된 필드에 대해 Json.NET에서 예외를 발생시키려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!