Heim > Backend-Entwicklung > C++ > Wie kann ich undefinierte Eigenschaften während der JSON-Deserialisierung mit Json.NET erkennen?

Wie kann ich undefinierte Eigenschaften während der JSON-Deserialisierung mit Json.NET erkennen?

DDD
Freigeben: 2025-01-19 02:51:08
Original
739 Leute haben es durchsucht

How Can I Detect Undefined Properties During JSON Deserialization with Json.NET?

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

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

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!

Quelle:php.cn
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