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.

¿Existe alguna manera de deserializar campos numerados JSON a un campo de tipo Lista de C# utilizando Newtonsoft?

Ejemplo JSON:

{
"name": "John Smith",
"pet1_name": "Fido",
"pet2_name": "Fluffy",
"pet3_name": "Killer"
}

Lo que busco es la forma más sencilla de utilizar Newtonsoft para deserializar esto en un objeto que se vea algo así:

public class Person {
public string Name { get; set; }
public List PetNames { get; set; }
}

Preferiblemente, me gustaría evitar tener que crear propiedades individuales llamadas “Pet1Name”, “Pet2Name”, etc. y combinarlas en una lista después de la deserialización, si eso es posible.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La forma más sencilla de utilizar Newtonsoft para deserializar el JSON dado en el objeto deseado es modificar el JSON para incluir un arreglo de nombres de mascotas en lugar de propiedades individuales para cada mascota. El JSON modificado se vería así:

    {
        "Name": "John Smith",
        "PetNames": ["Fido", "Fluffy", "Killer"]
    }
    

    Luego, puedes crear una clase Person con las propiedades Name y PetNames y utilizar la clase JsonConvert de Newtonsoft para deserializar el JSON:

    public class Person {
        public string Name { get; set; }
        public List<string> PetNames { get; set; }
    }
    
    string json = "{\"Name\":\"John Smith\",\"PetNames\":[\"Fido\",\"Fluffy\",\"Killer\"]}";
    
    Person person = JsonConvert.DeserializeObject<person>(json);
    

    Esto creará un objeto Person con la propiedad Name establecida en “John Smith” y una propiedad PetNames de tipo List<string>, que contendrá los nombres de las mascotas [“Fido”, “Fluffy”, “Killer”]. De esta manera, puedes evitar tener que crear propiedades individuales para cada mascota.

Comments are closed.