Che cos'è il formato di file JSON?
I file con estensione .json contengono dati memorizzati in formato testo semplice, utilizzando una notazione derivata da un sottoinsieme di JavaScript, con codifica UTF-8. L'attuale descrizione autorevole del formato è ECMA-404 e IETF RFC 8259 (2017), che ha sostituito la precedente RFC 4627. Tra gli altri usi, .json è ampiamente utilizzato per trasferire informazioni attraverso le reti e per memorizzare configurazioni, impostazioni e lo stato serializzato delle applicazioni.
Un documento .json può contenere:
- Stringhe,
- Numeri (virgola mobile a doppia precisione IEEE 754),
- Valori booleani (
trueefalse), null,- Array degli elementi sopra citati,
- Oggetti (mappe chiave-valore).
Gli oggetti e gli array possono essere annidati su più livelli. Sebbene la sintassi dei file .json sia basata su JavaScript, essi vengono utilizzati all'interno di applicazioni scritte in praticamente ogni linguaggio di programmazione. In JavaScript, l'analisi (parsing) e la serializzazione sono gestite dai metodi integrati JSON.parse() e JSON.stringify(), disponibili da ECMAScript 5 - non è richiesta alcuna libreria esterna. Il formato non supporta i commenti. Formati di dati testuali correlati includono YAML, XML e CSV.
Sicurezza e incolumità
RISCHIO: LOWUn file JSON è puro dato - non può contenere o eseguire codice, quindi aprirne uno in un editor è sicuro. I rischi sono informativi: le esportazioni di dati spesso contengono dati privati, chiavi API o token di sessione (non incollare tali file in visualizzatori online né condividerli); per gli sviluppatori, il parsing di JSON non attendibile con eval() invece di JSON.parse(), o file sovradimensionati usati per attacchi denial-of-service, sono insidie classiche. Attenzione alle doppie estensioni (.json.exe) nei download.
Dettagli del formato
in sintesiProgrammi che aprono file JSON
Dettagli tecnici
specifiche approfondite| Tipo MIME | application/json |
| Codifica caratteri | UTF-8; la RFC 8259 impone UTF-8 senza BOM per l'interscambio di rete |
| Firma del file (magic bytes) | Nessuna - testo semplice; un documento valido inizia con «{» (oggetto) o «[» (array), opzionalmente preceduti da spazi bianchi |
| Tipi di dati supportati | string, number, boolean (true/false), null, array, object |
| Rappresentazione numerica | Virgola mobile a doppia precisione (64 bit) IEEE 754; la specifica non definisce un tipo intero distinto |
| Codifica stringhe | Unicode; i caratteri non-ASCII possono apparire come UTF-8 letterale o come sequenze di escape a quattro cifre esadecimali \uXXXX |
| Supporto commenti | Nessuno - i commenti sono esplicitamente esclusi dalla specifica JSON |
| Spazi bianchi | Gli spazi bianchi non significativi (spazio, tabulazione, CR, LF) sono consentiti tra due token qualsiasi |
| Gestione BOM | La RFC 8259 proibisce esplicitamente un BOM UTF-8 all'inizio di un documento di interscambio JSON |
| Unicità delle chiavi oggetto | Le chiavi all'interno di un oggetto dovrebbero essere uniche; la RFC 8259 non vieta i duplicati ma lascia il comportamento definito dall'implementazione |
| Annidamento | Annidamento ricorsivo illimitato di oggetti e array; la profondità pratica è limitata dalla dimensione dello stack del parser |
| API JavaScript integrata | JSON.parse() e JSON.stringify() sono nativi da ECMAScript 5 (2009); nessuna libreria di terze parti necessaria |
| Interoperabilità | Indipendente dal linguaggio; parser e serializzatori esistono per praticamente ogni principale linguaggio di programmazione |
| Usi comuni | Payload di API REST, file di configurazione delle applicazioni, serializzazione dei dati, righe di log in streaming (JSONL / NDJSON), manifest di web app |
| Rilasciato | 2001 (json.org); first IETF spec RFC 4627 (2006); current RFC 8259 / ECMA-404 (2017) |
| Standard aperto | Sì · royalty-free |
| Specifica | www.rfc-editor.org |
Conversioni JSON
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file JSON.