JSON en classes C#

Collez du JSON et obtenez des classes ou records C# avec propriétés, collections List<T> et types nullables. Les attributs JsonPropertyName ou JsonProperty conservent les clés JSON d'origine.

Gratuit et privé. Tout se passe dans votre navigateur, rien n'est envoyé.

Comment ça marche

  1. Collez votre JSONCollez une réponse de votre API ou ouvrez un fichier .json. Cliquez sur Exemple pour voir un cas concret.
  2. Réglez les optionsIndiquez le nom du type principal et les options de ce langage. Le code se met à jour pendant que vous tapez.
  3. Copiez ou téléchargezCopiez le code dans votre projet ou téléchargez-le sous forme de fichier.

Prêt pour System.Text.Json et Newtonsoft

Les propriétés sont écrites en PascalCase. System.Text.Json compare les noms de propriétés en tenant compte de la casse par défaut, le générateur ajoute donc un attribut JsonPropertyName dès que le nom C# diffère de la clé. Avec Newtonsoft.Json, qui ignore la casse, l'attribut n'est ajouté que lorsque le nom change vraiment, par exemple de user_name à UserName.

Les champs optionnels et null deviennent des types nullables comme int? ou string?, ce qui convient aux projets où les types référence nullables sont activés. Les chaînes et listes obligatoires peuvent démarrer avec une valeur vide pour que le compilateur n'affiche pas d'avertissement. Les entiers au-delà de la plage des 32 bits deviennent long, les dates ISO deviennent DateTime, ou DateTimeOffset quand elles portent un fuseau horaire.

Questions fréquentes

Classe ou record ?

Les records offrent l'égalité par valeur et des propriétés init only, ce qui convient bien aux objets de transfert de données. Les classes avec get et set sont le choix classique et fonctionnent avec tous les sérialiseurs et les anciennes versions de .NET.

Mon JSON est-il envoyé quelque part ?

Non. Les types sont générés dans votre navigateur. Les réponses d'API qui contiennent des données clients ou des clés ne quittent jamais votre appareil.

Comment les champs optionnels sont-ils détectés ?

Si le JSON contient une liste d'objets, chaque objet est comparé aux autres. Un champ absent d'au moins un objet est marqué optionnel. Avec un seul objet, tous les champs sont considérés comme obligatoires.

Que se passe-t-il avec les champs toujours null ?

Leur type ne peut pas être connu à partir de l'exemple, ils reçoivent donc un type général comme unknown, object, Any ou JsonElement. Ajoutez un exemple où le champ a une valeur pour obtenir un type précis.

Pourquoi mon 1.0 est-il typé comme un nombre décimal ?

L'outil regarde comment le nombre est écrit. 1.0 ou 2.5 deviennent double ou float, 1 devient un entier. Si un champ est entier dans certains éléments et décimal dans d'autres, c'est le type décimal qui est utilisé.

Puis-je utiliser le résultat dans du code en production ?

Oui, le code compile tel quel dans les configurations habituelles. Relisez les noms et les types avant de le valider, car un exemple ne montre jamais toutes les valeurs possibles.

Est-ce que ça fonctionne hors ligne ?

Oui. Après une première visite de la page, l'outil continue de fonctionner sans connexion internet.