Maison > développement back-end > C++ > Comment puis-je détecter les champs manquants lors de la désérialisation JSON avec JsonConvert ?

Comment puis-je détecter les champs manquants lors de la désérialisation JSON avec JsonConvert ?

Susan Sarandon
Libérer: 2025-01-19 05:50:09
original
447 Les gens l'ont consulté

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

Utilisez JsonConvert pour détecter les champs manquants lors de la désérialisation

La gestion des champs manquants est essentielle pour garantir l'intégrité et la cohérence des données lors de la désérialisation d'objets JSON à l'aide de la classe JsonConvert de Json.NET. Par défaut, MissingMemberHandling est défini sur Ignore, ce qui oblige le désérialiseur à renvoyer silencieusement les valeurs par défaut pour les propriétés manquantes. Pour effectuer une validation stricte et détecter les erreurs, définissez MissingMemberHandling sur Error.

Exemple

Considérez le code suivant :

<code class="language-csharp">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);
            }
        }
    }
}</code>
Copier après la connexion

Résultats

Définir MissingMemberHandling sur Error lèvera une JsonSerializationException lorsqu'une propriété est manquante dans les données JSON.

<code>42
JsonSerializationException: Could not find member 'SomeOtherProperty' on object
of type 'MyJsonObjView'. Path 'SomeOtherProperty', line 3, position 33.</code>
Copier après la connexion

Conclusion

En configurant MissingMemberHandling comme Error, Json.NET impose le strict respect de la structure de classe définie lors de la désérialisation. Cela permet d'identifier et de prévenir d'éventuelles pertes ou corruptions de données dues à des champs manquants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal