Usando la librería Newtonsoft.Json para usar Json con C#

Ahora en el trabajo por aquello de la seguridad y la innovación se esta trabajando con archivos en formato Json.

¿Qué es el formato Json?

Ahora replico la definición de la página www.json.org

“JSON (JavaScript Object Notation – Notación de Objetos de JavaScript) es un formato ligero de intercambio de datos. Leerlo y escribirlo es simple para humanos, mientras que para las máquinas es simple interpretarlo y generarlo. Está basado en un subconjunto del Lenguaje de Programación JavaScriptStandard ECMA-262 3rd Edition – Diciembre 1999. JSON es un formato de texto que es completamente independiente del lenguaje pero utiliza convenciones que son ampliamente conocidos por los programadores de la familia de lenguajes C, incluyendo C, C++, C#, Java, JavaScript, Perl, Python, y muchos otros. Estas propiedades hacen que JSON sea un lenguaje ideal para el intercambio de datos.”

Últimamente y ante el auge de MVC, la definición de clases y objetos en los lenguajes de programación que se relacionan con los objetos de la base de datos esta muy en boga.

Una forma parece muy generalizada para utilizar archivos de Json, es la librería Newtonsoft.Json (https://www.newtonsoft.com/json) ya que es open-source y solo se solicitan donaciones, además que se puede comprar algún plan de soporte.

Para incorporar la dll en un proyecto de .NET se utiliza la ventana NuGet de Visual Studio (supongo que se puede hacer manualmente también).

Hice – como siempre – una aplicación de consola para probar la utilería, entonces en Referencias. damos clic derecho y usamos la opción Administrar paquetes NuGet.

En mi caso lo busqué y lo encontré on-line y lo instalé (en este caso aparece como ya instalado).

Algo que no es muy visible en los post que consulté, es cual es namespace, para agregar el using, el cual es:

using Newtonsoft.Json

Primero creamos una clase para serializarla primero y guardarla en un archivo:

class Girl
{

public string Name { get; set; }
public int Age { get; set; }
public string EyesColor { get; set; }
public bool IsMarried { get; set; }

}

He podido advertir que parece aquella “buena práctica de Java” de tener la variable y luego el getter y el setter ya pasó a la historia, y ahora las definiciones son así nombre del atributo con su set y get, nada más

Hacemos algunas instancias de la clase para serializarlas y guardarlas en el archivo.

class Program
{

static void Main(string[] args)
{

List<Girl> girlList = new List<Girl>();
Girl g = new Girl();
g.Name = “Scarlett”;
g.Age = 38;
g.EyesColor = “honey”;
g.IsMarried = false;
girlList.Add(g);
g = new Girl();
g.Name = “Salma”;
g.Age = 46;
g.EyesColor = “brown”;
g.IsMarried = true;
girlList.Add(g);
g = new Girl();
g.Name = “Ana”;
g.Age = 41;
g.EyesColor = “brown”;
g.IsMarried = true;
girlList.Add(g);

var jsonMyGirlsList = JsonConvert.SerializeObject(girlList);
System.IO.File.WriteAllText(@”D:\dATOSjSON\MyFirstJsonFile.json”,jsonMyGirlsList);
Console.WriteLine(“Done”);

}

}

Con esto el dato serializado es volcado en un archivo de texto con formato JSon. Lo podemos ver aquí:

MyFirstJsonFile.json

[{“Name”:”Scarlett”,”Age”:38,”EyesColor”:”honey”,”IsMarried”:false},

{“Name”:”Salma”,”Age”:46,”EyesColor”:”brown”,”IsMarried”:true},

{“Name”:”Ana”,”Age”:41,”EyesColor”:”brown”,”IsMarried”:true}]

Ahora vamos a leerlo y deserializarlo, primero creí que era por medio de un objeto, pero después consulté que sería una colección…aquí el código:

//Now the inverse process
List<Girl> lg = JsonConvert.DeserializeObject<List<Girl>>(System.IO.File.ReadAllText(@”D:\dATOSjSON\MyFirstJsonFile.json”));
foreach (var data in lg)
{

Console.WriteLine(data.Name);

}

Mostrando como salida.

Scarlett

Salma

Ana

Y pues con eso tenemos leer y escribir un archivo json con su la respectiva serialización – deserialización.

Hasta la próxima.

Profesor Miguel Araujo.

 

Deja un comentario