Heim > Backend-Entwicklung > C++ > Wie kann ich fehlende Felder während der JSON-Deserialisierung mit JsonConvert erkennen?

Wie kann ich fehlende Felder während der JSON-Deserialisierung mit JsonConvert erkennen?

Susan Sarandon
Freigeben: 2025-01-19 05:50:09
Original
470 Leute haben es durchsucht

How Can I Detect Missing Fields During JSON Deserialization with JsonConvert?

Verwenden Sie JsonConvert, um fehlende Felder während der Deserialisierung zu erkennen

Der Umgang mit fehlenden Feldern ist entscheidend für die Gewährleistung der Datenintegrität und -konsistenz bei der Deserialisierung von JSON-Objekten mithilfe der JsonConvert-Klasse von Json.NET. Standardmäßig ist MissingMemberHandling auf „Ignorieren“ festgelegt, wodurch der Deserialisierer stillschweigend Standardwerte für fehlende Eigenschaften zurückgibt. Um eine strenge Validierung durchzuführen und Fehler zu erkennen, legen Sie „MissingMemberHandling“ auf „Error“ fest.

Beispiel

Bedenken Sie den folgenden Code:

using System;
using Newtonsoft.Json;

namespace Json_Fail_Test
{
    [JsonObject(MemberSerialization.OptOut)]
    public class MyJsonObjView
    {
        [JsonProperty("MyJsonInt")]
        public int MyJsonInt { get; set; }
    }

    class Program
    {
        const string correctData = @"{ 'MyJsonInt': 42 }";

        const string wrongData = @"{ 'SomeOtherProperty': 'fbe8c20b' }";

        static void Main()
        {
            try
            {
                JsonSerializerSettings settings = new JsonSerializerSettings()
                {
                    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

Ergebnisse

Wenn Sie MissingMemberHandling auf „Error“ setzen, wird eine JsonSerializationException ausgelöst, wenn eine Eigenschaft in den JSON-Daten fehlt.

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

Fazit

Durch die Konfiguration von MissingMemberHandling als Fehler erzwingt Json.NET die strikte Einhaltung der definierten Klassenstruktur während der Deserialisierung. Dies hilft, mögliche Datenverluste oder -beschädigungen aufgrund fehlender Felder zu erkennen und zu verhindern.

Das obige ist der detaillierte Inhalt vonWie kann ich fehlende Felder während der JSON-Deserialisierung mit JsonConvert erkennen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage