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
Freigeben: 2025-01-19 05:59:10
Original
735 Leute haben es durchsucht

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:

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);
}
Nach dem Login kopieren

Ausgabe:

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

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!

Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage