← Tools-Übersicht|

JSON-zu-C#-.NET-Record- & Class-Generator (System.Text.Json & Newtonsoft)

100% Client-seitig

Konvertiert JSON-Payloads in stark typisierte C#-Records, -Classes und -Structs mit Unterstützung für Attribute von System.Text.Json ([JsonPropertyName]) und Newtonsoft.Json.

Generierter C#-Code
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; }
    }
}
Generierte Klassen/Records
4 records
Eigenschaften insgesamt
24 properties mapped
JSON-Payload-Größe
.NET 8+ / C# 12 ready
Technische Referenz & Architektur-Leitfaden

JSON-zu-C#-.NET-Record- & Class-Generator (System.Text.Json & Newtonsoft) — Referenz-Leitfaden

Konvertiert JSON-Payloads in stark typisierte C#-Records, -Classes und -Structs mit Unterstützung für Attribute von System.Text.Json ([JsonPropertyName]) und Newtonsoft.Json.

Wichtige Parameter & Steuerelemente

targetTypestring (enum: record | class | struct)

Definiert das C#-Deklarationsmodell. 'record' erzeugt unveränderliche positionale Records mit Init-Only-Settern, 'class' generiert standardmäßige Referenztypen und 'struct' erzeugt leichtgewichtige Wertetypen.

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

Wählt das Serialisierungsattribut-Set zur Dekoration der Properties aus, wie etwa [JsonPropertyName("...")] für modernes .NET oder [JsonProperty("...")] für Json.NET.

nullabilityHandlingstring (enum: nullableReferenceTypes | optionalPrimitives | nonNullable)

Konfiguriert die Formatierung für C# 8+ Nullable Reference Types (NRT), indem fehlende oder mit null belegte JSON-Attribute mit '?' gekennzeichnet werden (z. B. string?, int?) oder strikt nicht-nullable Typen erzeugt werden.

namingConventionstring (enum: PascalCase | camelCase | preserve)

Legt fest, wie Property-Namen in den generierten C#-Symbolen formatiert werden, während der ursprüngliche JSON-Key über Serialisierungsattribute gemappt wird.

Profi-Tipps & Best Practices

Häufige Fallstricke & Fehlerbehebung

System.Text.Json wirft eine JsonException ('The JSON value could not be converted') bei leeren Strings für numerische oder DateTime-Felder.

Implementieren Sie benutzerdefinierte JsonConverter (z. B. einen toleranten int- oder DateTime-Converter) oder konfigurieren Sie den Generator so, dass Nullable-Typen (int?, DateTime?) zusammen mit einem Pre-Parser für leere Strings oder einem custom `JsonConverter<T>` generiert werden.

Generierte C#-Klassennamen kollidieren beim Parsen verschachtelter JSON-Arrays, die anonyme Unterobjekte mit identischen Key-Namen enthalten.

Aktivieren Sie hierarchisches Typ-Prefixing oder Namespace-Scoping in den Generator-Einstellungen, um eindeutige Typ-Identifier (z. B. OrderBillingAddress vs. UserBillingAddress) anstelle generischer Kollisionssuffixe zuzuweisen.

Properties mit reservierten C#-Schlüsselwörtern (z. B. 'params', 'class', 'event', 'object') verursachen Compiler-Fehler im generierten Code.

Eskapieren Sie reservierte Bezeichner mit dem '@'-Präfix (z. B. `@class`, `@event`), während das exakte JSON-Mapping innerhalb von `[JsonPropertyName("class")]` bzw. `[JsonProperty("class")]` erhalten bleibt.

Häufig gestellte Fragen (FAQ)

▼

▼

▼

▼

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →