top of page

Convertir archivo JSON a listado objeto con C#

Codigo para leer un archivo JSON y convertirlo en un objeto de C#, 

Dada la clase Producto

using AmcWeb2.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Resources;

public class Producto
    {
        public int Id { get; set; }
        public string Nombre { get; set; }
        public double Precio { get; set; }
        public string Descripcion { get; set; }
        public  string RutaDeImagen { get; set; }
        public string PaginaDetallesDeProducto { get; set; }

    }

 

Contenido en archivo JSON

[
  {
    "id": 1,
    "Nombre": "Calendarios",
    "Descripcion": "Bajo diseño desde ",
    "Precio": 15
  },
  {
    "id": 2,
    "Nombre": "Cuadros decorativos",
    "Descripcion": "Bajo diseño desde ",
    "Precio": 16
  },
  {
    "id": 3,
    "Nombre": "Etiquetas Para Eventos",
    "Descripcion": "Bajo diseño desde ",
    "Precio": 17
  },
  {
    "id": 4,
    "Nombre": "Logotipos",
    "Descripcion": "Bajo diseño desde ",
    "Precio": 18
  }
]

 

Se puede consultar solo un elemento del archivo JSON con el siguiente método

    public Producto RegresaDetallesDeProducto(int idProducto)
        {
           
string jsFile = AppDomain.CurrentDomain.BaseDirectory + @"\Productos.json";
            var json = "";
            string rutaBase = ConfigurationManager.AppSettings.Get("rutaImagenes");

            try
            {
               
using (StreamReader r = new StreamReader(jsFile))
                {
                 
  json = r.ReadToEnd();
                    var items = JsonConvert.DeserializeObject<List<Producto>>(json);

                    foreach (var item in items)
                    {
                        if (item.Id == idProducto)
                        {
                            return new Producto
                            {
                             
  Id = item.Id,
                                Nombre = item.Nombre,
                                Descripcion = item.Descripcion,
                                Precio = item.Precio,
                                RutaDeImagen = rutaBase + item.Nombre + ".jpg",
                                PaginaDetallesDeProducto = "/Producto/DetalleDeProducto?idProducto=" + item.Id

                            };
                        }
                
                    } 
                }

            }
            catch (Exception ex)
            {
                throw;
            }
          
     
      return new Producto();
        }

Para obtener toda la información del archivo de json, se puede realizar el siguiente método.

 public List<Producto> RegresaProductos()
        {
         
  var listaDeImagenes = new List<Producto>();
            string jsonProductos = ConfigurationManager.AppSettings.Get("jsonProductos");
            string jsFile = AppDomain.CurrentDomain.BaseDirectory + jsonProductos;
            string rutaBase = ConfigurationManager.AppSettings.Get("rutaImagenes");
            string rutaProducto = "";
            var json = "";

            try
            {
                using (StreamReader r = new StreamReader(jsFile))
                {
                    json = r.ReadToEnd();
                 
  var items = JsonConvert.DeserializeObject<List<Producto>>(json);
                    foreach (var item in items)
                    {
                     
  listaDeImagenes.Add(new Producto
                        {
                            Id = item.Id,
                            Nombre = item.Nombre,
                            Descripcion = item.Descripcion,
                            Precio = item.Precio,
                            RutaDeImagen = rutaBase + item.Nombre + ".jpg",
                            PaginaDetallesDeProducto = "/Producto/DetalleDeProducto?idProducto=" + item.Id


                        });
               
               
    }
                }

            }
            catch (Exception ex)
            {
                throw;
            }
           
return listaDeImagenes;

        }

bottom of page