JSON vers classe C#
Collez un exemple de JSON et obtenez des classes C# POCO prêtes à être collées dans un fichier .cs. Choisit des types sensés, gère les objets imbriqués avec des définitions de classe supplémentaires, prend en charge les types de référence nullable et émet soit des attributs System.Text.Json soit Newtonsoft.Json selon votre projet.
Comment convertir JSON en C#
-
1
Collez le JSON
Un seul exemple suffit. Plusieurs exemples améliorent l'inférence des types nullable et des éléments de tableau.
-
2
Choisissez le style
System.Text.Json (.NET 6+) ou Newtonsoft.Json (héritage). Noms de propriétés en PascalCase avec `[JsonPropertyName]` pour JSON en camelCase.
-
3
Choisissez la version C# cible
C# 10+ pour les enregistrements et les espaces de noms à portée de fichier, C# 8 pour les types de référence nullable, ou plus ancien pour une compatibilité maximale.
-
4
Copiez les classes
Une classe racine plus des classes imbriquées pour chaque forme d'objet, le tout dans un fichier prêt à être intégré dans votre projet.
Exemple de sortie
Pour l’entrée :
{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }
Sortie System.Text.Json (C# 10+) :
public class User
{
[JsonPropertyName("firstName")]
public string FirstName { get; set; } = default!;
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("emails")]
public List<string> Emails { get; set; } = new();
[JsonPropertyName("address")]
public Address Address { get; set; } = default!;
}
public class Address
{
[JsonPropertyName("city")]
public string City { get; set; } = default!;
}
Mappage des types
| JSON | Type C# |
|---|---|
| chaîne | string |
| entier | int (ou long pour > int.MaxValue) |
| nombre (décimal) | double (ou decimal si opté) |
| booléen | bool |
| null | object? (ou fusionné avec la valeur voisine) |
| date ISO-8601 | DateTime (ou DateOnly) |
| chaîne de type GUID | Guid |
| tableau de chaînes | List<string> |
| objet | Classe imbriquée |
Options d’attributs
- System.Text.Json (
[JsonPropertyName("foo")]), préféré pour .NET 6+ et nouveaux projets. - Newtonsoft.Json (
[JsonProperty("foo")]), pour les projets hérités ou lorsque vous avez besoin de fonctionnalités spécifiques à Newtonsoft. - Aucun, les noms de propriétés correspondent exactement aux clés JSON (ne fonctionne que si les clés JSON sont déjà en PascalCase).
Erreurs courantes
- Utiliser
intpour un champ qui pourrait déborder. Si votre JSON a des valeurs qui dépassentint.MaxValue, utilisezlong. Le générateur promeut automatiquement lorsqu’il voit de grandes valeurs. - Oublier
[JsonIgnore]pour les propriétés calculées. Si vous ajoutez des propriétés d’aide à la classe générée, décorez-les avec[JsonIgnore]ou elles seront sérialisées lors de la sortie. - Oublier l’analyse indépendante de la culture. Les champs
decimaldoivent être désérialisés avecCultureInfo.InvariantCulture; System.Text.Json le fait par défaut, Newtonsoft avec des paramètres globaux. - Faire confiance au générateur avec un seul exemple. La nullabilité et les types d’éléments de tableau sont devinés à partir de ce qu’il voit. Vérifiez toujours les annotations nullable par rapport au comportement réel de votre API.
Questions fréquentes
Pour les nouveaux projets sur .NET 6+, utilisez System.Text.Json, il est plus rapide, intégré et prend désormais en charge presque toutes les fonctionnalités de Newtonsoft. Utilisez Newtonsoft pour les projets hérités ou lorsque vous avez besoin de ses fonctionnalités spécifiques (résolveurs de contrat personnalisés, JObject, gestion dynamique).
Les enregistrements sont idiomatiques pour les DTO immuables en C# 10+. Ils vous donnent l’égalité de valeur et une syntaxe concise. Les classes sont meilleures lorsque vous avez besoin de mutation ou de compatibilité héritée. L’outil vous permet de choisir l’un ou l’autre.
Si votre projet utilise des types de référence nullable (C# 8+), les champs observés comme null dans n’importe quel exemple deviennent string?, int?, etc. Sans NRT, la nullabilité est signalée uniquement pour les types valeur (par exemple, int?).
Des tableaux mixtes de différentes formes d’objet ne sont pas directement représentables en C# fortement typé. L’outil infère une classe de base commune ou (en dernier recours) object; pour des tableaux mixtes, vous voudrez généralement restructurer le JSON.
Outils similaires
Référence de la table ASCII
Table ASCII complète de 0 à 127 avec décimal, hexadécimal, octal, binaire et référence numérique HTML pour chaque caractère, y compris les codes de contrôle comme NUL, LF et DEL.
Référence des caractères HTML
Liste consultable des entités HTML, de leurs codes nommés et numériques, et un copier-coller en un clic pour les caractères et symboles spéciaux.
Compteur de FPS
Mesurez les FPS du navigateur avec requestAnimationFrame : lissage, fréquence d'images min et max, seuil d'alerte et graphique facultatif. Tout se passe en local, sans envoi ni API.
Référence des raccourcis clavier
Recherchez les raccourcis par défaut documentés de VS Code, Chrome et Bash avec GNU Readline sous macOS, Windows et Linux.
Générateur de carte CSS
Créez le CSS d’un conteneur de carte : fond, bordure, rayon des angles, espacement intérieur et ombre douce, avec aperçu immédiat et code à copier-coller.
Formateur HTML
Mettez du HTML en forme localement dans le navigateur avec une indentation de deux ou quatre espaces. Aucun HTML n’est envoyé ni validé.
Outil disponible dans d’autres langues
- JSON ke Kelas C# [ID]
- JSONからC#クラスへ [JA]
- JSON ถึงคลาสใน C# [TH]
- Từ JSON đến lớp C# [VI]
- JSON zu C# Klasse [DE]
- JSON을 C# 클래스로 [KO]
- JSON na klasę C# [PL]
- JSON para Classe C# [PT]
- JSON a Clase C# [ES]
- JSON till C#-klass [SV]
- تحويل JSON إلى فئة C# [AR]
- JSON naar C#-klasse [NL]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]
- 从 JSON 到 C# 类 [ZH]
- JSON to C# Class [EN]
- JSON in classe C# [IT]