«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу сделать исключения для броска json.net для пропущенных полей во время десериализации?

Как я могу сделать исключения для броска json.net для пропущенных полей во время десериализации?

Опубликовано в 2025-01-29
Просматривать:430

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

использует json.net для обнаружения пропущенных полей, отсутствующих во время спины json -sequentialization

] в Back -Sequentialization, важно иметь дело с пропавшими полями. По умолчанию сериализатор json.net тихо вернется к тишине, когда встречается с пропавшими полями. Такое поведение может привести к неограниченным ошибкам, когда объект с неверными атрибутами глубины.

вопрос:

вы сталкиваетесь с проблемой, то есть сериализаторы json.net не будут бросать аномалии, когда объекты, в которых отсутствуют полей, не имеют полей. Вместо этого он возвращает тихое значение, что затрудняет обнаружение неверных данных.

решение:

json.net предоставляет настраиваемые missionMemberHandling настройки. Установив его на

error

, вы можете указать, что сериализатор вызывает jsonerializationexception при столкновении пропущенных полей в течение периода опустынивания. Таким образом, вы можете явно обрабатывать такие ошибки в коде. code: с использованием newtonsoft.json; пытаться {{ // Читать строку json Const string rafledata = @"{'myjsonint': 42}"; Const string orressdata = @"{'ofometherproperty': 'fbe8c20b'}"; // Создание настроек сериализатора Jsonserializersettings settings = new jsoneserialatetngs (); SUTESS.MissingMemberHandling = MissingMemberHandling.Error; // объект обратной последовательности var goodobj = jsonconvert.deserializeobject (RecalyData, настройки); Console.writeline (goodobj.myjsonint.tostring ()); var badobj = jsonconvert.deserializeobject (ingdata, settings); Console.writeline (badobj.myjsonint.tostring ()); } Уловитель (Exception Ex) {{ Console.writeline (ex.gettype (). Name ":" ex.message); "Ex.Message); }

Выход:

42 JsoneserialionExceuon: не удалось найти участника «какой -то проперт» на объекте типа «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

, мы убедитесь, что сериализатор выбросит объект отсутствия полей jsonerizationException ] позволяет обрабатывать ошибки и убедитесь, что керамика данных.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3