Deserializar Json con la libreria Json.Net

Fecha de Publicación: 2020-08-31

Introducción

En este ejercicio deserializaremos un archivo Json y lo convertiremos en una lista de objetos con la libreria Json.Net



Requisitos

  • Visual Studio Community 2019
  • Json de ejemplo



Resultado

La siguiente imagen muestra lo que obtendremos al realizar este ejercicio:





Codigo Fuente

Descargar

Ejercicio

Comenzaremos como siempre abriendo nuestro Visual Studio y creando nuestra solución con un proyecto de consola para este ejemplo lo llamare DeserializeJson. Si no tienes conocimiento de como crearlo te dejo el link donde puedes aprender como hacerlo y regresar despues a este ejercicío.





Agregaremos la libreria NewtonSoft.Json para esto nos posicionaremos en nuestro explorador de soluciones y en Referencias daremos clic derecho en Administrador de paquetes NuGet....



Mostrara una pestaña NuGet DeserializeJson y se posicionara en Instalado, daremos clic en Examinar y nos mostrara una nueva pestaña.



Ahora en el buscador tecleamos NewtonSoft.Json, lo seleccionaremos y daremos clic en instalar.



Nos mostrara una pantalla para confirmar que queremos instalar la libreria, daremos clic en Aceptar.



En la sección de instalados ya nos aparece nuestra libreria, eso nos indica que ya la tenemos en nuestro proyecto lista para usarla.



En este paso agregaremos las referencias necesarias para nuestro programa. Nos posicionaremos en nuestro Explorador de Soluciones y despues en Referencias daremos clic.



Se abrira una ventana donde seleccionaremos la sección de Ensamblados -> Framework y buscaremos System.Configuration al final marcaremos la casilla como se muestra en la siguiente imagen:



Agregaremos los siguientes using:

  • using System.IO
  • using System.Configuration
  • using NewtonSoft.Json



Declararemos una variable tipo string y la instrucción para importar el valor de la key de nuestro App.Config como se muestra en la siguiente imagen:



Declararemos otra variable donde se alojara el contenido del archivo Json, la instruccion es File.ReadAllText y la ruta del archivo a leer.



Agregaremos una clase para alojar nuestros datos de la forma correcta y poderlos manejar en memoria, nos posicionamos en nuestro Explorador de soluciones y damos clic derecho en el nombre del proyecto DeserializeJson despues en Agregar y Nuevo elemento....



Seleccionamos Elementos de Visual C# y cuando nos despliegue el contenido seleccionamos Clase y en la nombraremos Feeds, al final daremos clic en Agregar.



Abriremos nuestra clase Feeds y comenzaremos a declarar las propiedades de acuerdo a nuestro archivo Json que descargamos previamente en mi caso esta así.

    
    "feeds": [
       {
            "id": 2140,
            "title": "gj",
            "description": "ghj",
            "location": "Hermannplatz 5-6, 10967 Berlin, Germany",
            "lng": 0,
            "lat": 0,
            "userId": 4051,
            "name": "manoj",
            "isdeleted": false,
            "profilePicture": "Images/9b291404-bc2e-4806-88c5-08d29e65a5ad.png",
            "videoUrl": null,
            "images": null,
            "mediatype": 0,
            "imagePaths": null,
            "feedsComment": null,
            "commentCount": 0,
            "multiMedia": [
                {
                    "id": 3240,
                    "name": "",
                    "description": null,
                    "url": "http://www.youtube.com/embed/mPhboJR0Llc",
                    "mediatype": 2,
                    "likeCount": 0,
                    "place": null,
                    "createAt": "0001-01-01T00:00:00"
                }
            ],
            "likeDislike": {
                "likes": 0,
                "dislikes": 0,
                "userAction": 2
            },
            "createdAt": "2020-01-02T13:32:16.7480006",
            "code": 0,
            "msg": null
        }
    
  

Al finalizar tendremos 4 clases(en mi caso) que seran las que alojaran nuestro Json con la estructura anterior, debo añadir que la clase RootObject es para indicar nuestra raiz del Json y si se fijan en la clase Feeds existe una lista y un IDictionary ya que el primero es un arreglo de propiedad Multimedia y LikeDislike es un Diccionario, dejo el link para descargar la clase como queda al final:



Agregaremos la linea que realizara el trabajo de convertir el archivo Json a un objeto la cual es:

    
    var response = JsonConvert.DeserializeObject(strBuffer);
    
  
En el cual se le indica que con el metodo JsonConvert.DeserializeObject trate como tipo RootObject la cadena de texto contenida en la variable strBuffer y la guarde en una variable tipo var.



Ya estamos listos para probar nuestro codigo, ponemos un punto de interrupción despues de la ultima instrucción que acabamos de colocar y ejecutamos el programa.

Como podemos visualizar el contenido del archivo ha sido convertido exitosamente a objetos tipo RootObject y ahora podemos realizar el tratamiento que querramos a este objeto.

Y con esto hemos finalizado el ejercicio!!!

Muchas gracias y si te fue util el ejercicio por favor hazmelo saber en las formas de contacto que se muestran en la parte inferior.

Hasta la proxima.

Referencias