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.

Escanee una cadena JSON en la función de Vista en ASP.NET Core 3.1.

Paso una cadena a mi vista en este fragmento de código:

List<><book>> data = getData();
string jsonData = JsonSerializer.Serialize<><><book>>>(data);
ViewData["Orders"] = jsonData;

getData() devuelve una lista de lista de una clase, por lo que jsonData se ve algo así después de la serialización JSON:

[
    { "title": "Some title", "price": 12.00 },
    { "title": "Some other title", "price": 23.00 }
]

Ahora, ¿cómo diablos lo puedo analizar en mi vista? Puedo hacer algo como esto:

@{
    ViewData["Title"] = "Books";
}

<p>@ViewData["Orders"]</p>

Y mostrar el contenido, pero no parece haber ninguna forma de analizar la cadena a un objeto JSON para poder presentarlo. He intentado pasar la variable data al ViewData, pero luego no puedo analizarlo ya que no encuentra la clase Book, así que estoy muy confundido…

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para analizar la cadena JSON en la vista, puedes usar el método Json.Parse() proporcionado por JavaScript. Primero, necesitas acceder al valor de la cadena desde el diccionario ViewData y analizarlo en un objeto de JavaScript de esta manera:

    @{
        ViewData["Title"] = "Books";
        string orders = ViewData["Orders"].ToString();
        object parsedOrders = Json.Parse(orders);
    }
    

    Luego, puedes usar este objeto parsedOrders para iterar a través de los datos y mostrarlos de la manera que desees. Por ejemplo, si quieres mostrar los títulos y precios de cada libro, puedes hacer algo así:

    @foreach(var books in parsedOrders as object[])
    {
        foreach(var book in books as object[])
        {
            var title = book.GetProperty("title").GetString();
            var price = book.GetProperty("price").GetDecimal();
            @title - @price
        }
    }
    

    Ten en cuenta que, dado que estás trabajando con listas anidadas de objetos, necesitas usar el operador as para convertir los objetos a los tipos apropiados. Además, debes acceder a las propiedades de cada libro utilizando el método GetProperty() de la clase JsonElement.

Comments are closed.