"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je faire des exceptions JSON.net Throw pour les champs manquants pendant la désérialisation?

Comment puis-je faire des exceptions JSON.net Throw pour les champs manquants pendant la désérialisation?

Publié le 2025-01-29
Parcourir:622

How Can I Make Json.NET Throw Exceptions for Missing Fields During Deserialization?

utilise json.net pour détecter les champs manquants manquants lors de la back-séquentization de JSON

Dans le dos-séquentialisation de JSON, il est important de traiter les champs manquants. Par défaut, le sérialiseur de JSON.net reviendra tranquillement au silence lors de la rencontre des champs manquants. Ce comportement peut entraîner des erreurs illimitées lorsqu'un objet avec des attributs de profondeur incorrects.

question:

vous rencontrez un problème, c'est-à-dire que les sérialiseurs JSON.net ne lanceront pas des anomalies lorsque les objets qui manquent de champs manquent de champs. Au lieu de cela, il renvoie une valeur silencieuse, ce qui rend difficile la détection de données incorrectes.

solution:

JSON.net fournit des paramètres configurables missionMemberHandling . En le définissant sur

error

, vous pouvez indiquer que le sérialiseur provoque jSonSerializationException lors de la rencontre des champs manquants pendant la période de désertification. De cette façon, vous pouvez gérer explicitement ces erreurs dans le code. code: Utilisation de newtonsoft.json; essayer {{ // Lire la chaîne JSON Const string correctData = @ "{'myjsonint': 42}"; Const string nuttedata = @ "{'someotherproperty': 'fbe8c20b'}"; // Créer des paramètres de sérialiseur JsonSerializersEttings Settings = new JSonSerialateTngs (); Settings.MissingMemberHandling = MissingMemberHandling.Error; // Objet séquentialisation inversé var goodoBj = jsonConvert.deserializeObject (correctData, paramètres); Console.WriteLine (GOODOBJ.MYJSONINT.TOSTRING ()); var badoBj = jsonconvert.deserializeObject (ingdata, paramètres); Console.writeline (badobj.myjsonint.toString ()); } Catch (exception ex) {{ Console.writeLine (ex.getType (). Nom ":" ex.Message); }

Sortir:

42 JSONSERIALIONEXCEUON: Impossible de trouver un membre «Une autreproperty» sur l'objet de type 'myjsonobjview'.
using Newtonsoft.Json;

try
{
    // 读取JSON字符串
    const string correctData = @"{ 'MyJsonInt': 42 }";
    const string wrongData = @"{ 'SomeOtherProperty': 'fbe8c20b' }";

    // 创建序列化器设置
    JsonSerializerSettings settings = new JsonSerializerSettings();
    settings.MissingMemberHandling = MissingMemberHandling.Error;

    // 反序列化对象
    var goodObj = JsonConvert.DeserializeObject(correctData, settings);
    Console.WriteLine(goodObj.MyJsonInt.ToString());

    var badObj = JsonConvert.DeserializeObject(wrongData, settings);
    Console.WriteLine(badObj.MyJsonInt.ToString());
}
catch (Exception ex)
{
    Console.WriteLine(ex.GetType().Name   ": "   ex.Message);
}
error

, nous nous assurons que le sérialiseur jette l'objet du manque de champs jSonSerizationException vous permet de gérer les erreurs et assurer cette poterie de données.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3