Verwendung von Json.NET zur Erkennung undefinierter Eigenschaften nach der Deserialisierung
In JSON-basierten Anwendungen ist es wichtig, Deserialisierungsfehler effizient zu behandeln. Während das Standardverhalten von Json.NET darin besteht, stillschweigend auf Standardwerte zurückzugreifen, gibt es Situationen, in denen Ausnahmen ausgelöst werden müssen.
Um diesem Bedarf gerecht zu werden, bietet Json.NET MissingMemberHandling
Einstellungen. Wenn Sie diese Eigenschaft auf Error
setzen, löst jeder Versuch, eine JSON-Eigenschaft ohne entsprechende Modelleigenschaft zu deserialisieren, JsonSerializationException
aus.
Bedenken Sie den folgenden Code:
<code class="language-csharp">using Newtonsoft.Json; using System; namespace JsonFailTest { [JsonObject(MemberSerialization.OptOut)] public class MyJsonObjView { [JsonProperty("MyJsonInt")] public int MyJsonInt { get; set; } } public static class Program { public static void Main(string[] args) { string correctData = @"{'MyJsonInt': 42}"; string wrongData = @"{'SomeOtherProperty': 'fbe8c20b'}"; var goodObj = JsonConvert.DeserializeObject<MyJsonObjView>(correctData); Console.WriteLine(goodObj.MyJsonInt); try { JsonSerializerSettings settings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Error }; var badObj = JsonConvert.DeserializeObject<MyJsonObjView>(wrongData, settings); Console.WriteLine(badObj.MyJsonInt); } catch (Exception ex) { Console.WriteLine($"{ex.GetType().Name}: {ex.Message}"); } } } }</code>
Mit diesem geänderten Code führt die Deserialisierung des wrongData
-Objekts nun zu folgendem Fehler:
<code>System.Runtime.Serialization.Json.JsonSerializationException: Could not find member 'SomeOtherProperty' on object of type 'MyJsonObjView'. Path 'SomeOtherProperty', line 3, position 33.</code>
Diese Fehlermeldung identifiziert eindeutig die Eigenschaft, die zum Fehlschlagen der Deserialisierung geführt hat, wodurch das Debuggen effizienter wird. Mithilfe der Einstellung MissingMemberHandling
können Sie eine strikte Attributvalidierung während der Deserialisierung erzwingen, um die Datenintegrität sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie kann ich undefinierte Eigenschaften während der JSON-Deserialisierung mit Json.NET erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!