Développer plus vite les DTOs pour les API Json
Publié le 26/04/2024
Par  Christophe MOMMER

Je ne sais pas vous, mais moi, il n'est pas rare que j'ai besoin de faire du code pour interroger une API externe. Parfois un SDK est fourni, et parfois non... (et parfois le SDK est moisi, donc autant s'en passer !)

Si tu n'aimes pas lire, la vidéo de démonstration est ici : https://youtube.com/shorts/_vGLGkE95-4

Donc, pour obtenir un DTO qui match avec les spécifications du JSON (souvent disponible dans la doc ou par le biais d'un Swagger), on peut faire ça en 3 clics :

  1. Sélectionner le code JSON
  2. Le copier
  3. Aller dans Visual Studio, créer une nouvelle classe, et faire "Édition (Edit)", "Collage spécial (Special Paste)", puis "Coller en tant que classe JSON (Paste JSON as Classes)"

Et là, tadam, Visual Studio 2022 va automatiquement générer le code C# pour avoir un DTO qui ressemble au code JSON précédemment copié. 

Bon, ça ne vient pas sans défaut. Le principal défaut pour moi étant que le nom des propriétés va matcher celui du JSON, qui généralement respecte la syntaxe JavaScript (camelCase) plutôt que la syntaxe C# (PascalCase). Et donc, si on utilise le JsonSerializer du framework, il conviendra de renommer toutes les propriétés et d'ajouter l'attribut [JsonPropertyName] pour reprendre l'ancienne valeur afin d'éviter les erreurs de parse ou d'output.

Mais malgré cela, je trouve que ça permet d'aller plus vite (surtout que la tâche énoncée ci-dessus peut très faiclement être demandée à ChatGPT)