es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo verificar si un elemento existe en una lista y tiene valor

Tengo clases de modelo como las siguientes

public class A
{
 public string Name{get;set;}
 public string Value{get;set;}
}
public class B
{
 public List<a> Items{get;set;}
}

El siguiente JSON se deserializará a la clase B:

{
"Items":[
{
  "Name":"Nombre del Alimento",
  "Value":"Papas fritas"
},
{
  "Name":"Nombre del Arma",
  "Value":"Pistola"
},
{
  "Name":"Nombre del Vehículo",
  "Value":"Coche"
},
{
  "Name":"Nombre de la Mascota",
  "Value":"Mewto"
},
{
  "Name":"Nombre Personal",
  "Value":"Leo"
}]}

Una vez que los valores se deserializan en la clase B, necesito validar si los elementos de la lista contienen los nombres “Nombre del Alimento”, “Nombre Personal”, “Nombre del Arma” y “Nombre del Coche”, y si los valores para estos elementos mencionados no son nulos ni están vacíos. ¿Cuál es el mejor enfoque para esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Un enfoque para validar si el elemento de la lista contiene los nombres mencionados y valores no nulos/vacíos podría ser utilizar LINQ para iterar a través de la lista de objetos A dentro de la clase B y verificar las propiedades Nombre y Valor de cada elemento con una lista predefinida de nombres aceptables. Podrías crear un método separado para manejar la lógica de validación y llamarlo después de deserializar el JSON en la clase B. Aquí tienes un ejemplo de implementación:

    public class A
    {
        public string Nombre { get; set; }
        public string Valor { get; set; }
    }
    
    public class B
    {
        public List<a> Elementos { get; set; }
    }
    
    public class Validador
    {
        private readonly List<string> _nombresAceptables = new List<string> { "Nombre de Comida", "Nombre Personal", "Nombre de Arma", "Nombre de Vehículo" };
    
        public bool ValidarElementos(List<a> elementos)
        {
            foreach(var elemento in elementos)
            {
                if(!_nombresAceptables.Contains(elemento.Nombre))
                {
                    return false; // el nombre del elemento no es aceptable
                }
    
                if(string.IsNullOrEmpty(elemento.Valor))
                {
                    return false; // el valor del elemento es nulo o vacío
                }
            }
    
            // todos los elementos son válidos
            return true;
        }
    }
    
    // después de deserializar el JSON en la clase B:
    var validador = new Validador();
    var esValido = validador.ValidarElementos(b.Elementos);
    if(esValido)
    {
        // continuar con la lógica de negocio
    }
    else
    {
        // manejar la falla de validación
    }
    

    En esta implementación, verificamos la propiedad Nombre de cada elemento con la lista predefinida de nombres aceptables, y la propiedad Valor para valores nulos o vacíos. Si alguno de los elementos no pasa la validación, el método devuelve false de inmediato. De lo contrario, devuelve true para indicar que todos los elementos son válidos. Podrías personalizar esta lógica de validación para adaptarse a tus requisitos específicos.

Comments are closed.