← Tous les outils Code Gen

Générateur de classes C# depuis JSON

Collez du JSON et obtenez instantanément des classes C# propres avec les types et annotations appropriés.

Modes POCO, Record et annotation

Les Plain Old CLR Objects (POCOs) sont la sortie C# la plus flexible : propriétés publiques avec accesseurs { get; set; }, constructeur sans paramètre et compatibilité complète avec System.Text.Json et Newtonsoft.Json. C'est la sortie par défaut compatible avec toutes les versions .NET.

Les records C# 9+ offrent une alternative concise pour les objets de transfert de données immuables. Une déclaration de record positionnel génère automatiquement un constructeur principal, des propriétés init-only, une égalité structurelle et une méthode deconstruct. Idéal pour les modèles de réponse API et les objets valeur de domaine.

Le mode annotation ajoute [JsonPropertyName("key")] (System.Text.Json) ou [JsonProperty("key")] (Newtonsoft.Json) à chaque propriété pour que les noms PascalCase C# se mappent correctement aux clés JSON camelCase. Les types référence nullables (string? et T?) sont émis quand un champ est absent dans certains objets.

Correspondance de types et conventions de nommage

Les chaînes JSON deviennent string, les entiers int (ou long pour les grandes valeurs), les décimaux double, les booléens bool, les champs null-only object?, et les tableaux List<T>. Les objets imbriqués génèrent leurs propres classes nommées.

Les clés JSON sont automatiquement converties en noms de propriétés PascalCase C# selon les recommandations Microsoft : les clés camelCase comme "firstName" deviennent "FirstName", les clés snake_case comme "first_name" aussi, et les clés kebab-case comme "first-name" également. La clé originale est préservée dans l'attribut [JsonPropertyName].

La déclaration de namespace est par défaut "MyApp.Models" mais est configurable. Une directive using pour System.Collections.Generic est ajoutée quand des propriétés List<T> sont présentes. La sortie est un fichier .cs unique avec toutes les classes dans l'ordre des dépendances.

Flux de travail de développement .NET

Le flux de travail le plus courant est la modélisation d'une API REST tierce. Collez un exemple de réponse JSON, sélectionnez le mode annotation System.Text.Json et déposez le fichier généré dans votre projet. Les classes sont immédiatement utilisables avec HttpClient.GetFromJsonAsync<T>().

Les projets ASP.NET Core Web API bénéficient de modèles de requête et de réponse bien typés. Le générateur produit des classes qui fonctionnent directement comme paramètres d'action de contrôleur ([FromBody]) et types de retour.

Les migrations Entity Framework Core partent de classes d'entités C#. Bien que le générateur ne puisse pas ajouter automatiquement les attributs EF, la sortie POCO fournit un solide point de départ que vous pouvez décorer avec [Table], [Key] et les propriétés de navigation.

FAQ

Mes données sont-elles envoyées à un serveur ?

Non. Tout le traitement s'effectue entièrement dans votre navigateur. Votre JSON ne quitte jamais votre appareil.

Quelle bibliothèque d'annotation choisir ?

Choisissez System.Text.Json pour les projets .NET 6+ (c'est la valeur par défaut sans dépendance supplémentaire). Choisissez Newtonsoft.Json si votre projet l'utilise déjà ou cible .NET Framework.

Comment les mots réservés C# sont-ils gérés comme noms de propriétés ?

Les mots réservés comme "class", "event", "operator" et "string" sont préfixés par "@" (ex. @class) selon la syntaxe des identificateurs verbatim C#, et un attribut [JsonPropertyName] préserve la clé JSON originale.

Les types référence nullables sont-ils supportés ?

Oui. Quand une propriété est présente avec une valeur null, ou absente dans certains éléments de tableau, elle est typée string? ou T? avec l'annotation nullable. Une directive #nullable enable est émise en haut du fichier.

Puis-je générer des record structs au lieu de records ?

Oui. Un toggle bascule entre record class (type référence, par défaut) et record struct (type valeur, C# 10+) selon vos besoins de performance et de sémantique.

Outils similaires