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.
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); } } } }
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>
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!