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
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.
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