Heim >Backend-Entwicklung >C++ >Wie kann ich dafür sorgen, dass Json.NET während der Deserialisierung Ausnahmen für fehlende Felder auslöst?
Erkennen fehlender Felder während der JSON-Deserialisierung mit Json.NET
Bei der JSON-Deserialisierung ist der Umgang mit fehlenden Feldern von entscheidender Bedeutung. Standardmäßig gibt der Serializer von Json.NET stillschweigend einen Standardwert zurück, wenn er auf ein fehlendes Feld stößt. Dieses Verhalten kann beim Deserialisieren von Objekten mit falschen Eigenschaften zu unerkannten Fehlern führen.
Frage:
Sie stoßen auf ein Problem, bei dem der Json.NET-Serializer keine Ausnahme auslöst, wenn er ein Objekt mit fehlenden Feldern deserialisiert. Stattdessen werden Standardwerte zurückgegeben, was die Erkennung falscher Daten erschwert.
Lösung:
Json.NET bietet eine konfigurierbare MissingMemberHandling
Einstellung. Indem Sie es auf Error
festlegen, weisen Sie den Serialisierer an, JsonSerializationException
auszulösen, wenn während der Deserialisierung ein fehlendes Feld festgestellt wird. Auf diese Weise können Sie solche Fehler explizit in Ihrem Code behandeln.
Code:
<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>
Ausgabe:
<code>42 JsonSerializationException: Could not find member 'SomeOtherProperty' on object of type 'MyJsonObjView'. Path 'SomeOtherProperty', line 3, position 33.</code>
Durch die Einstellung von MissingMemberHandling
auf Error
stellen wir sicher, dass der Serialisierer JsonSerializationException
für Objekte mit fehlenden Feldern auslöst, sodass Sie Fehler behandeln und die Datenintegrität sicherstellen können.
Das obige ist der detaillierte Inhalt vonWie kann ich dafür sorgen, dass Json.NET während der Deserialisierung Ausnahmen für fehlende Felder auslöst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!