Vous désirez surprendre vos collègues un mercredi matin? J’ai ce qu’il vous faut avec ce billet.
Ce que j’aime le plus avec l’informatique est de découvrir une petite fonctionnalité qui est présente dans un logiciel qui permet d’améliorer de beaucoup l’automatisation d’une tâche. De petits plaisirs de la vie tout à fait gratuits.
Convertir un document JSON en une série d’objets concrets est une tâche longue, manuelle et assez ennuyante. Il peut même arriver, dans le processus, d’oublier des propriétés ou même se tromper dans l’orthographe de celles-ci.
1. Trouver un bout de JSON à convertir
Pour que la démonstration puisse fonctionner, vous allez devoir aller sur internet et vous trouver un petit bout de JSON, celui que vous voulez.
Je vais vous attendre ici.
Toujours rien? Vous n’avez pas cherché vraiment fort. Voici un exemple tiré de la page Wikipédia de JSON :
{ "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": 10021 }, "phoneNumbers": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] }
2. La magie de Visual Studio 2012
Lorsque je dis « magie », vous devez le prendre au sens figuré, n’est-ce pas? Croire à la magie c’est comme croire au père Noël. Ça n’existe pas.
Une fois dans Visual Studio, vous allez vous créer une classe C# régulière et placer votre curseur entre les deux accolades réservées au namespace. À partir de là, vous visiterez le menu Edit > Paste Special > Paste JSON as Classes.
Comme promis, votre JSON sera converti en une classe C# fortement typée. Comme celle-ci :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Rootobject | |
{ | |
public string firstName { get; set; } | |
public string lastName { get; set; } | |
public int age { get; set; } | |
public Address address { get; set; } | |
public Phonenumber[] phoneNumbers { get; set; } | |
} | |
public class Address | |
{ | |
public string streetAddress { get; set; } | |
public string city { get; set; } | |
public string state { get; set; } | |
public int postalCode { get; set; } | |
} | |
public class Phonenumber | |
{ | |
public string type { get; set; } | |
public string number { get; set; } | |
} |
D’ailleurs, il est à remarquer que, si votre projet utilise .NET 4.5, vous pouvez utiliser la fonction « Paste XML as Classes ». Alors, si vous êtes à utiliser du XML dans le cadre de votre projet, la même transformation peut être complétée. N’est-ce pas assez fantastique?
Moi, je crois que oui. Happy coding!
Wow ! C’est une belle feature de l’IDE !
Hey pas mal ça, merci ! Décidément les collages spéciaux chez Microsoft ça fait tout et n’importe quoi