Passa al contenuto principale

1. Introduction (Introduzione)

JavaScript Object Notation (JSON) è un formato testuale per la serializzazione di dati strutturati. Deriva dai letterali oggetto di 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 fa riferimento all'ultima versione di Unicode piuttosto che a una versione specifica. Non è previsto che le modifiche future nella specifica Unicode influiscano sulla sintassi di JSON.

Un oggetto è una collezione non ordinata di zero o più coppie nome/valore, dove un nome è una stringa e un valore è 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" provengono dalle convenzioni di JavaScript.

Gli obiettivi di progettazione di JSON erano che fosse 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", "NOT RECOMMENDED", "MAY" e "OPTIONAL" in questo documento devono essere interpretate come descritto in BCP 14 [RFC2119] [RFC8174] quando, e solo quando, appaiono in lettere maiuscole, come mostrato qui.

Le regole grammaticali in questo documento devono essere interpretate come descritto in [RFC5234].

1.2. Specifications of JSON (Specifiche di JSON)

Questo documento sostituisce [RFC7159]. [RFC7159] ha reso obsoleto [RFC4627], che originariamente descriveva JSON e registrava il tipo di media "application/json".

JSON è anche descritto in [ECMA-404].

Il riferimento a ECMA-404 nella frase precedente è normativo, non con il significato abituale che gli implementatori devono consultarlo per comprendere questo documento, ma per sottolineare che non ci sono incoerenze nella definizione del termine "testo JSON" in nessuna delle sue specifiche. Si noti, tuttavia, che ECMA-404 consente diverse pratiche che questa specifica raccomanda di evitare nell'interesse della massima interoperabilità.

L'intento è che la grammatica sia la stessa tra i due documenti, sebbene vengano utilizzate descrizioni diverse. Se viene trovata una differenza tra di essi, ECMA e IETF lavoreranno insieme per aggiornare entrambi i documenti.

Se viene trovato un errore in uno dei due documenti, l'altro dovrebbe essere esaminato per vedere se presenta un errore simile; se lo fa, dovrebbe essere corretto, se possibile.

Se uno dei due documenti viene modificato in futuro, ECMA e IETF lavoreranno insieme per garantire che i due documenti rimangano allineati durante la modifica.

1.3. Introduction to This Revision (Introduzione a questa revisione)

Negli anni trascorsi dalla pubblicazione di RFC 4627, JSON ha trovato un uso molto ampio. Questa esperienza ha rivelato determinati modelli che, sebbene consentiti dalle sue specifiche, hanno causato problemi di interoperabilità.

Inoltre, è stato segnalato un piccolo numero di errata riguardanti RFC 4627 (vedere gli ID Errata RFC 607 [Err607] e 3607 [Err3607]) e riguardanti RFC 7159 (vedere gli ID Errata RFC 3915 [Err3915], 4264 [Err4264], 4336 [Err4336] e 4388 [Err4388]).

L'obiettivo di questo documento è applicare questi errata, rimuovere le incoerenze con altre specifiche di JSON ed evidenziare le pratiche che possono portare a problemi di interoperabilità.