none
Valdiad Json que no tiene un campo RRS feed

  • Pregunta

  • Hola disculpen tengo el siguiente codigo 

      List<Document> productosEncontrados = await getProductosEncontrados.GetRemainingAsync();
    
                    var json = JsonConvert.SerializeObject(productosEncontrados);
                    listaProductosWeb = JsonConvert.DeserializeObject<List<ProductosWeb>>(json);

    y me gustaria validar el Json cuando en el momento que lo deserializo ya que en algunos registros vienen algunos campos que no existen en otros  y me da un KeyNotFoundException

    lunes, 20 de enero de 2020 15:42

Todas las respuestas

  • Valida tu json contra un xsd, tienes que hacer algo como esto

    1. Debes cargar el json en un XMLdocument y validar el esquema del mismo

           

     XmlDocument xml = new XmlDocument();
            xml.LoadXml(@"<?xml version=""1.0"" encoding=""UTF-8""?>
                <entrega orden=""12"">
                    <Usuario>Juan Perez</Usuario>
                    <Detalle>
                        <Descripcion>Una orden muy grande</Descripcion>
                    </Detalle>
                </entrega>");
    
            xml.Schemas.Add(null, "schema.xsd");
            xml.Validate((sender, args) =>
            {
                switch (args.Severity)
                {
                    case XmlSeverityType.Error:
                        Console.WriteLine("XML no es valido: {0}", args.Exception);
                        break;
                    case XmlSeverityType.Warning:
                         Console.WriteLine("XML advertencia: {0}", args.Exception);
                        break;
                }
            });

    El esquema lo creas como cualquier XSD

    <?xml version="1.0" encoding="UTF-8" ?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="entrega">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="usuario" type="xs:string"/>
                    <xs:element name="detalle">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="descripcion" type="xs:string"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="orden" type="xs:string" use="required"/>
            </xs:complexType>
        </xs:element>
    </xs:schema>

    Saludos


    Ing. Carlos Monroy

    lunes, 20 de enero de 2020 17:30
  • hola

    Tienes el concepto de json schema

    Json.NET Schema

    para definir una estructura que podrias aplicar como validacion y determinar si el json que recibes la cumple

    Cuentas con toda la documentacion

    Json.NET Schema Documentation

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de enero de 2020 18:43