Outil Tool Kumar
JSON vers C#
Générez des modèles C# pour System.Text.Json. Par défaut, chaque propriété reçoit un attribut JsonPropertyName, et les champs présents dans tous les enregistrements de l'exemple utilisent required.
Utiliser cet outil
- Collez une réponse représentative, en incluant des enregistrements dont les champs diffèrent.
- Vérifiez la sortie générée et modifiez le nom racine si nécessaire.
- Copiez ou téléchargez le code, puis vérifiez les types par rapport à votre contrat d'API.
Exemple détaillé
Cette sortie provient du convertisseur intégré. Les deux prix des articles donnent un champ à virgule flottante ; les valeurs null et chaîne du champ note donnent un champ nullable.
Entrée
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}Sortie
using System.Collections.Generic;
using System.Text.Json.Serialization;
public class Root
{
[JsonPropertyName("user-id")]
public required long UserId { get; set; }
[JsonPropertyName("profile")]
public required Profile Profile { get; set; }
[JsonPropertyName("items")]
public required List<Item> Items { get; set; }
}
public class Profile
{
[JsonPropertyName("city")]
public required string City { get; set; }
[JsonPropertyName("created_at")]
public required string CreatedAt { get; set; }
}
public class Item
{
[JsonPropertyName("price")]
public required double Price { get; set; }
[JsonPropertyName("note")]
public required string? Note { get; set; }
}
Désérialiser avec System.Text.Json
Copiez les classes dans votre projet .NET et activez les annotations de nullabilité. Les attributs JsonPropertyName associent les propriétés PascalCase aux clés exactes de l'entrée.
Utilisez une version de .NET dont System.Text.Json prend en charge les membres required, comme .NET 7 ou une version ultérieure. Configurez les options du sérialiseur pour votre application.
using System.Text.Json;
Root? model = JsonSerializer.Deserialize<Root>(responseBody);Options et cas limites
- System.Text.Json est utilisé par défaut. Choisissez Newtonsoft dans « Plus d'options » pour obtenir des attributs JsonProperty de Newtonsoft.Json et JToken pour les valeurs inconnues.
- Les membres required générés nécessitent C# 11 ou une version ultérieure. La syntaxe des références nullables suppose que les annotations de nullabilité sont activées.
- Les entiers utilisent long, les entiers qui dépassent la plage des entiers signés sur 64 bits utilisent decimal et les nombres décimaux utilisent double. La plage de decimal est elle aussi limitée ; choisissez une représentation personnalisée pour les valeurs plus grandes.
- Un champ nullable peut rester obligatoire si sa clé est présente dans chaque enregistrement. L'obligation de présence et l'acceptation de null sont deux règles distinctes. Les dates restent de type string.
Privé par défaut
Votre document reste dans ce navigateur. Tool Kumar analyse, convertit et crée les téléchargements sur votre appareil, sans compte ni étape d'envoi au serveur.
JSON vers C# : questions fréquentes
- Le générateur utilise-t-il System.Text.Json ou Newtonsoft.Json ?
- System.Text.Json par défaut, avec des attributs JsonPropertyName. Choisissez Newtonsoft dans le menu « Plus d'options » du convertisseur pour produire à la place des attributs JsonProperty de Newtonsoft.Json.
- Quelle version de C# la sortie nécessite-t-elle ?
- C# 11 ou une version ultérieure pour les membres required. Activez les types référence nullables pour utiliser string? et les autres annotations de référence comme prévu.
- Pourquoi une propriété obligatoire peut-elle aussi être nullable ?
- La clé apparaît dans tous les enregistrements de l'exemple, mais sa valeur peut être null. Par exemple, required string? Note représente la présence de la clé indépendamment du type de sa valeur.
- Le générateur produit-il des listes et des classes imbriquées ?
- Oui. Les tableaux d'objets deviennent List<Item>, et chaque structure imbriquée donne lieu à une classe générée.
Outils associés
JSON vers Java, JSON vers TypeScript et Générateur JSON Schema.