JSON in classe C#

Incolla un campione JSON e ottieni classi C# POCO pronte da incollare in un file .cs. Sceglie tipi sensati, gestisce oggetti annidati con definizioni di classe aggiuntive, supporta tipi di riferimento nullable ed emette attributi System.Text.Json o Newtonsoft.Json a seconda del tuo progetto.

Come convertire JSON in C#

  1. 1

    Incolla il JSON

    Un singolo campione è sufficiente. Campioni multipli migliorano l'inferenza di nullable e degli elementi degli array.

  2. 2

    Scegli lo stile

    System.Text.Json (.NET 6+) o Newtonsoft.Json (legacy). Nomi delle proprietà in PascalCase con `[JsonPropertyName]` per JSON in camelCase.

  3. 3

    Scegli la versione C# target

    C# 10+ per record e spazi dei nomi a livello di file, C# 8 per tipi di riferimento nullable, o versioni precedenti per la massima compatibilità.

  4. 4

    Copia le classi

    Una classe radice più classi annidate per ogni forma di oggetto, tutte in un file pronte da inserire nel tuo progetto.

Esempio di output

Per input:

{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }

Output di 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!;
}

Mappatura dei tipi

JSON Tipo C#
string string
integer int (o long per > int.MaxValue)
number (decimale) double (o decimal se scelto)
boolean bool
null object? (o unito con il fratello)
data ISO-8601 DateTime (o DateOnly)
string a forma di GUID Guid
array di stringhe List<string>
oggetto Classe annidata

Opzioni di attributo

  • System.Text.Json ([JsonPropertyName("foo")]), preferito per .NET 6+ e nuovi progetti.
  • Newtonsoft.Json ([JsonProperty("foo")]), per progetti legacy o quando hai bisogno di funzionalità specifiche di Newtonsoft.
  • Nessuno, i nomi delle proprietà corrispondono esattamente alle chiavi JSON (funziona solo se le chiavi JSON sono già in PascalCase).

Errori comuni

  • Utilizzare int per un campo che potrebbe traboccare. Se il tuo JSON ha valori che superano int.MaxValue, usa long. Il generatore promuove automaticamente quando vede valori grandi.
  • Mancanza di [JsonIgnore] per proprietà calcolate. Se aggiungi proprietà ausiliarie alla classe generata, decorale con [JsonIgnore] o verranno serializzate in uscita.
  • Dimenticare l’analisi culturale-invariante. I campi decimal dovrebbero deserializzarsi con CultureInfo.InvariantCulture; System.Text.Json lo fa per impostazione predefinita, Newtonsoft con impostazioni globali.
  • Fidarsi del generatore con un campione. La nullabilità e i tipi degli elementi degli array vengono indovinati da ciò che vede. Controlla sempre le annotazioni nullable rispetto al comportamento effettivo della tua API.

Domande frequenti

Per nuovi progetti su .NET 6+, usa System.Text.Json, è più veloce, integrato e ora supporta quasi tutte le funzionalità di Newtonsoft. Usa Newtonsoft per progetti legacy o quando hai bisogno delle sue funzionalità specifiche (risolutori di contratto personalizzati, JObject, gestione dinamica).

I record sono idiomatici per DTO immutabili in C# 10+. Offrono uguaglianza di valore e sintassi concisa. Le classi sono migliori quando hai bisogno di mutazione o compatibilità legacy. Lo strumento ti consente di scegliere entrambi.

Se il tuo progetto utilizza tipi di riferimento nullable (C# 8+), i campi osservati come null in qualsiasi campione diventano string?, int?, ecc. Senza NRT, la nullabilità è segnalata solo per i tipi di valore (ad es. int?).

Array misti di forme di oggetti diverse non sono direttamente rappresentabili in C#. Lo strumento inferisce una classe base comune o (fallback) object; per array misti di solito è meglio riprogettare il JSON.

Strumenti correlati

Strumento disponibile in altre lingue