Petite perle Visual Studio : transformer le JSON en classes

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.

endless

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 :


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; }
}

view raw

JSON.cs

hosted with ❤ by GitHub

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!

Les liens de la semaine – Édition #56

Développement

Code JavaScript intéressant de la semaineUn raytracer implémenté en seulement 35 lignes de JavaScript.

.NET

Web

Technologie

Science et autres

Des tabulations dans ton code? Tu devrais dire non, merci.

Dans le développement logiciel, il y a de ces débats qui suscitent des réactions très fortes auprès des développeurs. Certains d’entre nous sont fortement attachés à une façon de développer ou de travailler en particulier. Dès qu’une divergence survient, nous assistons à une montée des barricades.

Rapidement, j’ai dénoté quelques exemples :

Le débat de ceux qui ne se terminent jamais est l’utilisation des tabulations versus les espaces. Depuis qu’il est possible d’insérer une tabulation à partir de votre clavier, le débat existe.

Au début des temps, l’utilisation de la tabulation était une façon simpliste de compresser le contenu des fichiers texte. Sur un terminal Unix, une tabulation équivalait à huit espaces. Le ratio de compression était relativement intéressant et à coût faible.

Les années ont passé et l’interprétation du symbole ASCII de la tabulation a changé avec le temps et l’aspect de l’économie d’espace disque est, disons-le, moins important sur nos ordinateurs modernes.

Après tout, que sera votre premier réflexe lorsque vous serez à court d’espace disque? Supprimer quelques fichiers inutilisés ou convertir les tabulations en espaces dans vos fichiers texte bruts? Autres temps, autres mœurs, comme ils disent.

L’utilisation de tabulations dans du code devrait être à éviter à tout prix. À ce jour, son utilisation est, à mon avis, l’effet d’une tolérance molle et d’une proximité facile sur le clavier. La tabulation est tout juste à côté de la lettre Q (lorsqu’il est en mode QWERTY).

Pour un développeur .NET, Visual Studio n’est pas très rigide sur l’utilisation des tabulations ou des espaces dans le code. À mon avis, la principale raison de cela est que, lorsqu’un groupe de développeurs travaillent dans un environnement uniforme, le débat se pose un peu moins.

Un bout de code en mal de vivre en raison des tabulations
Un bout de code en mal de vivre en raison des tabulations et des espaces

Il est vrai que l’irritation est à son apogée lorsque les développeurs proviennent d’un environnement mixte et à travers différentes plateformes. Je me souviens d’avoir eu à argumenter, avec un professeur, à propos d’un travail remis alors que j’avais programmé celui-ci avec un IDE sous Linux alors que lui le corrigeait sous Windows.

Le résultat visuel était catastrophique. Les deux éditeurs n’utilisaient pas la même configuration d’indentation par tabulations. Heureusement, j’avais été en mesure de faire prévaloir mon point auprès de ce professeur.

Prendre action

La seule façon d’enrayer cette situation est de prendre action, et d’établir avec vos camarades développeur un standard de développement où vous établirez des règles communes pour le maintien de votre code. L’utilisation des espaces plutôt que des tabulations doit y figurer. Un consensus doit être établi.

Si vous êtes plus du genre à prendre action sur-le-champ, voici comment vous pouvez y arriver selon votre éditeur ou votre IDE.

Visual Studio

  1. Visitez l’écran de configuration situé sous Outils > Options > Éditeur texte > Tous les langages > Tabulations.
  2. Cochez l’option « Insérer des espaces ».

Sublime Text

  1. Visiter le menu Preferences > Setting – User
  2. Ajouter la ligne « translate_tabs_to_spaces »: true

Notepad++

  1. Visiter l’écran de configuration situé sous Settings > Preferences > Tab Settings.
  2. Selon le langage sélectionné, cocher l’option « Replace by space ».

Les liens de la semaine – Édition #55

Développement

.NET

Technologie

Web

Mon expérience au Agile Tour Montréal 2013

Le samedi 9 novembre dernier, j’ai passé ma journée avec des collègues à l’événement Agile Tour Montréal 2013, organisé par la communauté Agile de Montréal.

En quelques mots, j’ai trouvé l’organisation de l’événement impeccable et solidement planifié.logo-agiletour-20131[1]

Au total, j’ai assisté à six présentations à travers ma journée. Les présentations étaient sur des sujets différents, mais toutes choisis dans mon contexte de travail. C’est-à-dire le développement logiciel.

En bout de compte, j’ai respecté le plan de match que je m’étais initialement convenu dans mon billet précédent à l’exception d’une plage horaire. J’ai remplacé la séance de 10:15 à 11:45 pour assister à celles données par Éric De Carufel et Michel de Champlain.

Certaines des présentations auxquelles j’ai assisté n’ont pas été entièrement à mon goût. Ce n’est pas tellement important, car j’ai apprécié l’intérêt et la maîtrise des sujets par les orateurs. Dans tous les cas, les présentations données ont gardé mon attention pendant toute leur durée.

J’ai eu deux présentations coup de cœur pendant cette journée. La présentation « Esclave de votre dette technique? » a éveillé une réflexion au sujet de la qualité des livraisons logicielles et la façon de s’assurer la maintenabilité de notre code afin de conserver une vélocité de développement décente.

L’autre fut The Power of an Agile Mindset par Linda Rising. Une réflexion sur l’état d’esprit qu’accompagne la philosophie Agile chez l’être humain. Elle a démontré son point avec une aisance et une clarté hors du commun. À mon avis, la présentation était du même niveau de qualité que l’on retrouve chez TED.

En plus, à titre d’appréciation, la foule lui a donné une ovation debout. Elle en a été émue, d’ailleurs.

Mot de la fin

Je retiens une expérience positive de ma journée à l’Agile Tour Montréal 2013. Le but premier de cette journée était, avant tout, de prendre le pouls de l’expérience de la pratique de l’agilité dans d’autres organisations.

La variété était au rendez-vous dans la sélection des présentations et une majorité de celles-ci étaient données en français par des agilistes d’ici. À mon avis, c’est là que vient l’aspect unique et particulier de cette conférence, car le contenu francophone dans les TI est relativement rare.

Est-ce que vous vous demandez si vous devez considérer y aller l’année prochaine? Je vous le recommande fortement. Surtout si vous débutez dans le domaine de l’agilité ou bien si, comme moi, vous cherchez à vous donner de l’inspiration et y prendre de bonnes idées chez l’expérience des autres.