[c#] Determine si los resultados de Json son objeto o matriz


Answers

Siempre puedes ajustar tu deserialización dentro de un bloque try / catch. Intente deserializarlo como una matriz dentro del bloque try, y arrojará una excepción si se trata de un tipo de objeto.

try
{
    //if array do this
    phones = serailizer.Deserialize<List<Phone>>(reader);
}
catch //Deserialization of array failed - must be object
{
    //if object do this
    phone = serailizer.Deserialize<Phone>(reader);
}

Sé que algunas personas fruncirían el ceño al usar try / catch como este, pero creo que es efectivo.

Question

Estoy utilizando .net web api para obtener json y devolverlo a la interfaz para angular. El json puede ser un objeto o una matriz. Mi código actualmente solo funciona para la matriz, no para el objeto. Necesito encontrar una forma de probar o determinar si los contenidos son un objeto o matriz.

Aquí está mi código

    public HttpResponseMessage Get(string id)
    {
        string singleFilePath = String.Format("{0}/../Data/phones/{1}.json", AssemblyDirectory, id);
        List<Phone> phones = new List<Phone>();
        Phone phone = new Phone();
        JsonSerializer serailizer = new JsonSerializer();

        using (StreamReader json = File.OpenText(singleFilePath))
        {
            using (JsonTextReader reader = new JsonTextReader(json))
            {
                //if array do this
                phones = serailizer.Deserialize<List<Phone>>(reader);
                //if object do this
                phone = serailizer.Deserialize<Phone>(reader);
            }
        }

        HttpResponseMessage response = Request.CreateResponse<List<Phone>>(HttpStatusCode.OK, phones);

        return response;
    }

Lo anterior puede no ser la mejor forma de hacerlo. Es justo donde estoy ahora.




Links



Tags

c# c#   .net .net   json json