„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich JSON.NET -Ausnahmen für fehlende Felder während der Deserialisierung machen?

Wie kann ich JSON.NET -Ausnahmen für fehlende Felder während der Deserialisierung machen?

Veröffentlicht am 2025-01-29
Durchsuche:233

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

verwendet json.net, um die fehlenden Felder zu erkennen, die während JSONs Back -Sequentialization

fehlt. In Jsons Back -Sequentialisierung ist es wichtig, mit fehlenden Feldern umzugehen. Standardmäßig kehrt der Serializer von JSON.NET leise wieder zum Schweigen zurück, wenn er auf fehlende Felder stieß. Dieses Verhalten kann zu unbegrenzten Fehlern führen, wenn ein Objekt mit falschen tieferen Attributen.

Frage:

Sie begegnen einem Problem, dh JSON.NET -Serialisierern werden keine Anomalien werfen, wenn die Objekte, denen Felder fehlen, Felder fehlen. Stattdessen gibt es einen stillen Wert zurück, was es schwierig macht, falsche Daten zu erkennen.

Lösung:

json.net bietet eine konfigurierbare MissionMemberHandling Einstellungen. Indem Sie es an

error

festlegen, können Sie angeben, dass der Serializer JsonSerializationException bei der Begegnung mit fehlenden Feldern während der Desertification -Zeit verursacht. Auf diese Weise können Sie solche Fehler im Code explizit behandeln. code: verwenden newTonsoft.json; versuchen {{{{ // Lesen Sie die JSON -Zeichenfolge Const string corredata = @"{'myjsonInt': 42}"; Const String WurstData = @"{'SomeOtherProperty': 'fbe8c20b'}"; // Serializer -Einstellungen erstellen JsonSerializerSettings -Einstellungen = new JsonSerialateTngs (); Einstellungen. // Reverse -Sequentialisation -Objekt umgekehrt var goodObj = jsonConvert.DeserializeObject (correctData, Einstellungen); Console.writeLine (Goodobj.myjsonInt.ToString ()); var badobj = jsonConvert.DeserializeObject (Ingdata, Einstellungen); Console.writeLine (badobj.myjsonint.toString ()); } fangen (Ausnahme ex) {{{{ Console.writeLine (ex.GetType (). Name ":" Ex.Message); }

Ausgabe:

42 JsonSerialionExceuon: Ich konnte kein Mitglied 'etwas weitererProperty' auf dem Objekt finden Typ 'MyjsonObjview'.
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(correctData, settings);
    Console.WriteLine(goodObj.MyJsonInt.ToString());

    var badObj = JsonConvert.DeserializeObject(wrongData, settings);
    Console.WriteLine(badObj.MyJsonInt.ToString());
}
catch (Exception ex)
{
    Console.WriteLine(ex.GetType().Name   ": "   ex.Message);
}
error

, wir stellen sicher, dass der Serializer das Objekt des Fehlens von Feldern jsonserizationException ermöglicht, Fehler umzugehen und sicherstellen, dass diese Töpferwaren datiert werden.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3