Recherche…


Introduction

La rubrique suivante présentera un moyen de travailler avec Json en utilisant le langage C # et les concepts de sérialisation et de désérialisation.

Exemple Json Simple

{
    "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 vous êtes nouveau dans Json, voici un tutoriel illustré .

Les premières choses: la bibliothèque pour travailler avec Json

Pour travailler avec Json en utilisant C #, il est nécessaire d'utiliser Newtonsoft (bibliothèque .net). Cette bibliothèque fournit des méthodes permettant au programmeur de sérialiser et de désérialiser des objets, etc. Il y a un tutoriel si vous voulez connaître les détails sur ses méthodes et ses utilisations.

Si vous utilisez Visual Studio, accédez à Outils / Gestionnaire de packages Nuget / Gérer le package vers la solution / et tapez «Newtonsoft» dans la barre de recherche et installez le package. Si vous ne possédez pas NuGet, ce tutoriel détaillé pourrait vous aider.

Implémentation C #

Avant de lire du code, il est important de comprendre les principaux concepts qui aideront à programmer les applications utilisant json.

Sérialisation : Processus de conversion d'un objet en flux d'octets pouvant être envoyé via des applications. Le code suivant peut être sérialisé et converti dans json précédent.

Désérialisation : Processus de conversion d'un flux d'octets / json en objet. C'est exactement le processus inverse de la sérialisation. Le json précédent peut être désérialisé en un objet C # comme le montrent les exemples ci-dessous.

Pour cela, il est important de transformer la structure json en classes afin d’utiliser les processus déjà décrits. Si vous utilisez Visual Studio, vous pouvez transformer automatiquement un json en une classe simplement en sélectionnant "Editer / Coller Spécial / Coller JSON en tant que classes" et en collant la structure 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;
}

La sérialisation

 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
    }

La méthode ".SerializeObject" reçoit en paramètre un objet type , vous pouvez donc y mettre n'importe quoi.

Désérialisation

Vous pouvez recevoir un fichier json de n'importe où, d'un fichier ou même d'un serveur. Il n'est donc pas inclus dans le code suivant.

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

La méthode ".DeserializeObject" désérialise " jsonExample " en un objet " Author ". C'est pourquoi il est important de définir les variables json dans la définition des classes, de sorte que la méthode y accède pour la remplir.

Fonction Serialization & De-Serialization Common Utilities

Cet exemple utilisait une fonction commune pour toute la sérialisation et la désérialisation des objets de type.

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow