1. Introduction (Introduzione)
JavaScript Object Notation (JSON) è un formato testuale per la serializzazione di dati strutturati. Deriva dai letterali di oggetti JavaScript, come definiti nello standard del linguaggio di programmazione ECMAScript, terza edizione [ECMA-262].
JSON può rappresentare quattro tipi primitivi (stringhe, numeri, booleani e null) e due tipi strutturati (oggetti e array).
Una stringa è una sequenza di zero o più caratteri Unicode [UNICODE]. Si noti che questo riferimento punta all'ultima versione di Unicode, non a una versione specifica. Si prevede che i futuri cambiamenti alla specifica Unicode non influenzeranno la sintassi di JSON.
Un oggetto è una collezione non ordinata di zero o più coppie nome/valore, dove un nome è una stringa e un valore può essere una stringa, un numero, un booleano, null, un oggetto o un array.
Un array è una sequenza ordinata di zero o più valori.
I termini "oggetto" e "array" derivano dalle convenzioni di JavaScript.
Gli obiettivi di progettazione di JSON erano di essere minimale, portabile, testuale e un sottoinsieme di JavaScript.
1.1. Conventions Used in This Document (Convenzioni utilizzate in questo documento)
Le parole chiave "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" e "OPTIONAL" in questo documento devono essere interpretate come descritto in [RFC2119].
Le regole grammaticali in questo documento devono essere interpretate come descritto in [RFC5234].
1.2. Specifications of JSON (Specifiche di JSON)
Questo documento aggiorna [RFC4627], che descriveva JSON e registrava il tipo di media "application/json".
Una descrizione di JSON in termini ECMAScript appare nella versione 5.1 della specifica ECMAScript [ECMA-262], sezione 15.12. JSON è anche descritto in [ECMA-404].
Tutte le specifiche grammaticali JSON concordano sugli elementi sintattici del linguaggio.
1.3. Introduction to This Revision (Introduzione a questa revisione)
Negli anni trascorsi dalla pubblicazione di RFC 4627, JSON ha avuto un uso molto ampio. Questa esperienza ha rivelato certi modelli che, sebbene consentiti dalle specifiche, hanno portato a problemi di interoperabilità.
Inoltre, è stato segnalato un piccolo numero di errata (vedere gli ID erratum RFC 607 [Err607] e 3607 [Err3607]).
L'obiettivo di questo documento è applicare questi errata, eliminare le incoerenze con altre specifiche JSON e evidenziare le pratiche che possono portare a problemi di interoperabilità.