Heim >Backend-Entwicklung >C++ >Wie kann ich dafür sorgen, dass Json.NET während der Deserialisierung Ausnahmen für fehlende Felder auslöst?

Wie kann ich dafür sorgen, dass Json.NET während der Deserialisierung Ausnahmen für fehlende Felder auslöst?

Linda Hamilton
Linda HamiltonOriginal
2025-01-19 05:59:10699Durchsuche

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

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn