"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo hacer que JSON.NET arroje excepciones para los campos faltantes durante la deserialización?

¿Cómo puedo hacer que JSON.NET arroje excepciones para los campos faltantes durante la deserialización?

Publicado el 2025-01-29
Navegar:710

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

usa json.net para detectar los campos faltantes que faltan durante la espalda de JSON

En la back -secuencialización de JSON, es importante tratar con los campos faltantes. Por defecto, el serializador de JSON.NET volverá silenciosamente al silencio cuando se encuentre con campos faltantes. Este comportamiento puede conducir a errores ilimitados cuando un objeto con atributos incorrectos de profunda.

pregunta:

te encuentras con un problema, es decir, los serializadores JSON.NET no arrojarán anormalidades cuando los objetos que carecen de campos carecen de campos. En cambio, devuelve el valor silencioso, lo que dificulta la detección de datos incorrectos. solución:

json.net proporciona una configuración configurable

MissionMemberHandling . Al configurarlo en error

, puede indicar que el serializador causa

jsonserializationException al encontrar campos faltantes durante el período de desertificación. De esta manera, puede manejar explícitamente dichos errores en el código. código: usando newtonsoft.json; intentar {{ // Lee la cadena JSON Const string correctData = @"{'myJsonint': 42}"; Const string incorrecto = @"{'SomeotherProperty': 'fbe8c20b'}"; // crear configuraciones de serializador JSONSERIALIZESTINGS SECUNCIONES = new JSonserialAtetngs (); settings.MissingMemberHandling = MissingMemberHandling.Error; // Objeto de secuencialización inverso var goodObj = jsonConvert.deserializeObject (correcto, configuración); Console.WriteLine (goodobj.myjsonint.ToString ()); var badobj = jsonConvert.deserializeObject (ingData, configuración); Console.WriteLine (BADOBJ.MYJSONINT.ToString ()); } Catch (excepción ex) {{ Console.WriteLine (ex.gettype (). Nombre ":" Ex.message); }

Producción: 42 JSonserialionExceuon: No pudo encontrar el miembro 'SomeotherProperty' en el objeto de tipo 'myJsonObJView'.

al configurar
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);
}
, nos aseguramos de que el serializador arroje el objeto de la falta de campos

jsonserizationException le permite manejar los errores y asegurar esa cerámica de datos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3