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
Incolla il JSON
Un singolo campione è sufficiente. Campioni multipli migliorano l'inferenza di nullable e degli elementi degli array.
-
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
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
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
intper un campo che potrebbe traboccare. Se il tuo JSON ha valori che superanoint.MaxValue, usalong. 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
decimaldovrebbero deserializzarsi conCultureInfo.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
Riferimento Tabella ASCII
Tabella ASCII completa da 0 a 127 con decimale, esadecimale, ottale, binario e riferimento numerico HTML per ogni carattere, inclusi i codici di controllo come NUL, LF e DEL.
Riferimento ai caratteri HTML
Elenco ricercabile delle entità HTML, dei loro codici nominati e numerici, e copia con un clic per caratteri e simboli speciali.
Generatore di lettere casuali
Genera lettere A-Z casuali. Scegli la quantità, usa maiuscole, minuscole o un mix, e applica il risultato a giochi, spunti o attività in classe.
Riferimento scorciatoie da tastiera
Cerca le scorciatoie predefinite documentate di VS Code, Chrome e Bash con GNU Readline su macOS, Windows e Linux.
Promemoria Markdown
Riferimento pratico Markdown con anteprime reali ed esempi pronti da copiare per titoli, elenchi, tabelle, codice, link, immagini e sintassi GFM.
Formatter HTML
Formatta HTML localmente nel browser con rientri di due o quattro spazi. L’HTML non viene caricato né validato.
Strumento disponibile in altre lingue
- JSON till C#-klass [SV]
- تحويل JSON إلى فئة C# [AR]
- JSON naar C#-klasse [NL]
- Từ JSON đến lớp C# [VI]
- JSON ถึงคลาสใน C# [TH]
- JSON a Clase C# [ES]
- JSONからC#クラスへ [JA]
- JSON ke Kelas C# [ID]
- JSON vers classe C# [FR]
- JSON zu C# Klasse [DE]
- JSON na klasę C# [PL]
- JSON para Classe C# [PT]
- JSON을 C# 클래스로 [KO]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]
- 从 JSON 到 C# 类 [ZH]
- JSON to C# Class [EN]