← Accueil des outils|

Générateur de Records & Classes C# .NET depuis JSON (System.Text.Json & Newtonsoft)

100 % côté client

Convertissez des payloads JSON en records, classes et structs C# fortement typés, prenant en charge les attributs System.Text.Json [JsonPropertyName] et Newtonsoft.Json.

Code C# généré
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace GeneratedModels
{
    public record OrderPayload
    {
        [JsonPropertyName("orderId")]
        public string? OrderId { get; init; }
    
        [JsonPropertyName("customer")]
        public Customer? Customer { get; init; }
    
        [JsonPropertyName("items")]
        public List<Item?>? Items { get; init; }
    
        [JsonPropertyName("billingAddress")]
        public BillingAddress? BillingAddress { get; init; }
    
        [JsonPropertyName("totalAmount")]
        public double TotalAmount { get; init; }
    
        [JsonPropertyName("currency")]
        public string? Currency { get; init; }
    
        [JsonPropertyName("isDelivered")]
        public bool IsDelivered { get; init; }
    
        [JsonPropertyName("deliveryNotes")]
        public object? DeliveryNotes { get; init; }
    }

    public record BillingAddress
    {
        [JsonPropertyName("street")]
        public string? Street { get; init; }
    
        [JsonPropertyName("city")]
        public string? City { get; init; }
    
        [JsonPropertyName("stateOrProvince")]
        public string? StateOrProvince { get; init; }
    
        [JsonPropertyName("postalCode")]
        public string? PostalCode { get; init; }
    
        [JsonPropertyName("country")]
        public string? Country { get; init; }
    }

    public record Item
    {
        [JsonPropertyName("sku")]
        public string? Sku { get; init; }
    
        [JsonPropertyName("name")]
        public string? Name { get; init; }
    
        [JsonPropertyName("quantity")]
        public int Quantity { get; init; }
    
        [JsonPropertyName("unitPrice")]
        public double UnitPrice { get; init; }
    
        [JsonPropertyName("discounts")]
        public List<int>? Discounts { get; init; }
    
        [JsonPropertyName("inStock")]
        public bool InStock { get; init; }
    }

    public record Customer
    {
        [JsonPropertyName("id")]
        public int Id { get; init; }
    
        [JsonPropertyName("fullName")]
        public string? FullName { get; init; }
    
        [JsonPropertyName("email")]
        public string? Email { get; init; }
    
        [JsonPropertyName("isPremiumMember")]
        public bool IsPremiumMember { get; init; }
    
        [JsonPropertyName("registeredAt")]
        public DateTimeOffset RegisteredAt { get; init; }
    }
}
Classes/Records générés
4 records
Total des propriétés
24 properties mapped
Taille de la charge utile JSON
.NET 8+ / C# 12 ready
Référence technique et guide d'architecture

Générateur de Records & Classes C# .NET depuis JSON (System.Text.Json & Newtonsoft) — Guide de référence

Convertissez des payloads JSON en records, classes et structs C# fortement typés, prenant en charge les attributs System.Text.Json [JsonPropertyName] et Newtonsoft.Json.

Paramètres clés et contrôles

targetTypestring (enum: record | class | struct)

Définit le modèle de déclaration C#. 'record' génère des records positionnels immuables avec accesseurs init-only, 'class' génère des types référence standards et 'struct' produit des types valeur légers.

serializerLibrarystring (enum: System.Text.Json | Newtonsoft.Json | None)

Sélectionne le jeu d'attributs de sérialisation pour décorer les propriétés, tel que [JsonPropertyName("...")] pour le .NET moderne ou [JsonProperty("...")] pour Json.NET.

nullabilityHandlingstring (enum: nullableReferenceTypes | optionalPrimitives | nonNullable)

Configure le formatage des types référence nullables (NRT) de C# 8+, marquant les attributs JSON absents ou nuls avec '?' (ex. string?, int?) ou appliquant des types strictement non-nullables.

namingConventionstring (enum: PascalCase | camelCase | preserve)

Détermine la convention de nommage appliquée aux identifiants C# générés tout en associant la clé JSON d'origine via les attributs de sérialisation.

Conseils de pro et bonnes practices

Pièges courants et dépannage

System.Text.Json lève une JsonException : 'The JSON value could not be converted' lorsqu'une chaîne vide est fournie pour un champ numérique ou DateTime.

Ajoutez des implémentations personnalisées de JsonConverter (comme un convertisseur tolérant pour int ou DateTime) ou configurez le générateur pour émettre des types nullables (int?, DateTime?) associés à un pré-parseur de chaînes vides ou à un `JsonConverter<T>` personnalisé.

Des collisions de noms de classes C# générées surviennent lors de l'analyse de tableaux JSON imbriqués contenant des sous-objets anonymes avec des clés identiques.

Activez le préfixage hiérarchique des types ou le découpage par namespaces dans les paramètres du générateur afin d'attribuer des identifiants de type uniques (ex. OrderBillingAddress vs UserBillingAddress) plutôt que des suffixes génériques de collision.

Les propriétés reprenant des mots-clés réservés du C# (ex. 'params', 'class', 'event', 'object') provoquent des erreurs de compilation dans le code généré.

Échappez les identifiants réservés à l'aide du préfixe '@' (ex. `@class`, `@event`) tout en préservant le nom exact du champ JSON dans `[JsonPropertyName("class")]` ou `[JsonProperty("class")]`.

Foire aux questions (FAQ)

▼

▼

▼

▼

Outils et utilitaires connexes

Tous les outils →