Buscar..


Introducción

El siguiente tema presentará una forma de trabajar con Json utilizando el lenguaje C # y los conceptos de serialización y deserialización.

Ejemplo simple de Json

{
    "id": 89,
    "name": "Aldous Huxley",
    "type": "Author",
    "books":[{
               "name": "Brave New World",
               "date": 1932 
             },
             {
               "name": "Eyeless in Gaza",
               "date": 1936
             },
             {
               "name": "The Genius and the Goddess",
               "date": 1955 
             }]  
}

Si eres nuevo en Json, aquí hay un tutorial ejemplificado .

Lo primero es lo primero: la biblioteca para trabajar con Json

Para trabajar con Json usando C #, es necesario usar Newtonsoft (biblioteca .net). Esta biblioteca proporciona métodos que permiten al programador serializar y deserializar objetos y más. Hay un tutorial si desea conocer detalles sobre sus métodos y usos.

Si usa Visual Studio, vaya a Herramientas / Nuget Package Manager / Manage Package to Solution / y escriba "Newtonsoft" en la barra de búsqueda e instale el paquete. Si no tienes NuGet, este tutorial detallado puede ayudarte.

Implementación de C #

Antes de leer algunos códigos, es importante comprender y comprender los conceptos principales que ayudarán a programar las aplicaciones utilizando json.

Serialización : proceso de convertir un objeto en un flujo de bytes que se pueden enviar a través de las aplicaciones. El siguiente código puede ser serializado y convertido al json anterior.

Deserialización : proceso de conversión de un json / flujo de bytes en un objeto. Es exactamente el proceso opuesto de serialización. El json anterior se puede deserializar en un objeto C # como se muestra en los ejemplos a continuación.

Para resolver esto, es importante convertir la estructura json en clases para poder utilizar los procesos ya descritos. Si usa Visual Studio, puede convertir un json en una clase automáticamente simplemente seleccionando "Editar / Pegar Especial / Pegar JSON como Clases" y pegando la estructura json.

using Newtonsoft.Json;

  class Author
{
    [JsonProperty("id")] // Set the variable below to represent the json attribute 
    public int id;       //"id"
    [JsonProperty("name")]
    public string name;
    [JsonProperty("type")]
    public string type;
    [JsonProperty("books")]
    public Book[] books;

    public Author(int id, string name, string type, Book[] books) {
        this.id = id;
        this.name = name;
        this.type= type;
        this.books = books;
    }
}

 class Book
{
   [JsonProperty("name")]
   public string name;
   [JsonProperty("date")]
   public DateTime date;
}

Publicación por entregas

 static void Main(string[] args)
    {
        Book[] books = new Book[3];
        Author author = new Author(89,"Aldous Huxley","Author",books);
        string objectDeserialized = JsonConvert.SerializeObject(author); 
        //Converting author into json
    }

El método ".SerializeObject" recibe como parámetro un objeto de tipo , por lo que puede poner cualquier cosa en él.

Deserialización

Puede recibir un json desde cualquier lugar, un archivo o incluso un servidor, por lo que no se incluye en el siguiente código.

static void Main(string[] args)
{
    string jsonExample; // Has the previous json
    Author author = JsonConvert.DeserializeObject<Author>(jsonExample);
}

El método ".DeserializeObject" deserializa ' jsonExample ' en un objeto " Autor ". Por esta razón, es importante establecer las variables json en la definición de las clases, de modo que el método acceda a ellas para completarlas.

Función de utilidad de serialización y deserialización.

Este ejemplo se utiliza para la función común para todo tipo de serialización y deserialización de objetos.

using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;

namespace Framework
{
public static class IGUtilities
{
        public static string Serialization(this T obj)
        {
        string data = JsonConvert.SerializeObject(obj);
        return data;
        }

        public static T Deserialization(this string JsonData)
        {
        T copy = JsonConvert.DeserializeObject(JsonData);
        return copy;
        }

         public static T Clone(this T obj)
        {
            string data = JsonConvert.SerializeObject(obj);
            T copy = JsonConvert.DeserializeObject(data);
            return copy;
        }
}
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow