C# et JSON

Si vous devez utiliser des données formatées avec le standard JSON, voici un truc simple pour démarrer (mais vous pouvez complexifier à votre guise ;)). J’utilise pour ce faire l’extension Web Essentials et le package NuGet Json.NET. Le fichier données JSON que j’utilise est celui-ci: Fichier exemple JSON (source).

Voici les étapes pour prendre les données JSON, générer les classes nécessaires et téléchargés les données et remplir ces nouvelles classes:

  • Installer l’extension Web Essentials
  • Créer une nouveau fichier de classe
  • Mettre dans le presse-papier un extrait ou l’ensemble des données JSON (Copier ou CTRL-C)
  • Cliquer-droit dans l’éditeur ou dans le menu EDITION/Collage Spécial et sélectionner “Coller le code JSON en tant que classes”

image

Ceci va créer des classes à partir du code JSON. Dans notre exemple, ceci donne les classes suivantes:

public class Rootobject
{
   public Items items { get; set; }
}

public class Items
{
   public Item[] item { get; set; }
}

public class Item
{
   public string id { get; set; }
   public string type { get; set; }
   public string name { get; set; }
   public float ppu { get; set; }
   public Batters batters { get; set; }
   public Topping[] topping { get; set; }
   public Fillings fillings { get; set; }
}

public class Batters
{
   public Batter[] batter { get; set; }
}

public class Batter
{
   public string id { get; set; }
   public string type { get; set; }
}

public class Fillings
{
   public Filling[] filling { get; set; }
}

public class Filling
{
   public string id { get; set; }
   public string name { get; set; }
   public float addcost { get; set; }
}

public class Topping
{
   public string id { get; set; }
   public string type { get; set; }
}

Par la suite, nous devons télécharger ce fichier depuis notre application pour afficher/traiter les données. Pour ce faire:

  • Ajouter le package NuGet Json.NET
  • Ajouter les usings suivants:
    • using Newtonsoft.Json; using System.Net.Http;
  • Utilisation de HttpClient et Json.Net pour extraire les données JSON et populer nos classes
private static async Task<Rootobject> GetData()
{
    HttpClient client = new HttpClient();
    var response = await client.GetStringAsync("http://www.gabrielmongeon.com/public/blog/donuts.js");
    var root = JsonConvert.DeserializeObject<Rootobject>(response);

    return root;
}

Voilà, vous avez une structure de données rempli avec des données provenant de JSON. Il ne reste plus qu’à trouver/créer une source de données et d’afficher/formater ces données dans votre application.

Bonne programmation


Suggestions de lecture :