JSON Toolkit

JSON vs JSON5 vs JSONC

In sintesi: Superset rigorosi in ordine: JSONC aggiunge i commenti; JSON5 aggiunge virgolette singole, chiavi senza virgolette, virgole finali e numeri esadecimali. Scegliere male rompe un'API, non il tuo editor.

Principiante~4 min di letturaPubblicato il 2026-10-30Aggiornato il 2026-10-30
Confronto delle funzionalità di JSON, JSON5 e JSONC

In sintesi: usa JSON standard ogni volta che i dati attraversano il confine di un sistema, e usa JSONC solo per la configurazione locale che gli umani modificano; ricorri a JSON5 quando hai bisogno di virgolette singole, virgole finali o chiavi senza virgolette, ma conferma prima che il loader lo supporti.

In una riga: JSONC è JSON più i commenti; JSON5 è JSON più le abitudini JavaScript.

Matrice delle funzionalità

Funzionalità JSON JSONC JSON5
Stringhe con virgolette doppie ✅ ✅ ✅
Stringhe con virgolette singole ❌ ❌ ✅
Chiavi senza virgolette ❌ ❌ ✅
Commenti di riga // ❌ ✅ ✅
Commenti a blocco /* */ ❌ ✅ ✅
Virgole finali ❌ ❌ ✅
Numeri esadecimali 0xFF ❌ ❌ ✅
Infinity / NaN ❌ ❌ ✅
Stringhe su più righe ❌ ❌ ✅
Leggibile dai parser standard ✅ ❌ ❌

Nota che JSONC risolve solo i commenti. Molti assumono che "JSON che consente i commenti" consenta anche le virgole finali; tsconfig.json fallisce comunque su una di esse.

A cosa serve ciascuno

JSON — interscambio. API, code, colonne JSON dei database, log. Tutto ciò che è macchina-a-macchina.

JSONC — configurazione dell'editor. VS Code analizza questi file da sé, quindi JSON.parse non li vede mai. Non esiste un RFC; è una convenzione de facto guidata da Microsoft.

JSON5 — un superset indulgente per gli umani. L'obiettivo era "configurazione che sembra un letterale oggetto JavaScript". Il più adatto ai file .json5 caricati dagli strumenti di build; la sintassi più ampia e il supporto degli strumenti più stretto.

Scegliere

Situazione Scelta
Corpi di richiesta o risposta JSON, nessuna alternativa
Colonne JSON in MySQL / PostgreSQL JSON, le loro funzioni non accettano nient'altro
Configurazione di progetto che richiede spiegazioni JSONC se supportato, altrimenti YAML
Vuoi la scioltezza in stile JS JSON5, dopo aver confermato che il loader lo supporti
Lo modificheranno i non tecnici YAML, l'indentazione batte le parentesi graffe

Una trappola facile

Analizzare un file JSONC come JSON rigoroso produce un errore che punta al commento:

SyntaxError: Unexpected token / in JSON at position 42

Prima di eliminare il commento, controlla se il file è pensato per essere JSONC. Eliminalo e potresti comunque incontrare una virgola finale due righe dopo.

FAQ

Come devo scegliere tra JSONC e JSON5?

Usa JSONC quando i commenti sono l'unica cosa di cui hai bisogno: aggiunge // e /* */ sopra JSON, e settings.json e tsconfig.json di VS Code lo usano. Usa JSON5 quando vuoi anche virgolette singole, chiavi senza virgolette, virgole finali, numeri esadecimali o stringhe su più righe. Entrambi dipendono dal loader, quindi conferma che lo strumento che legge il file lo supporti.

Perché un file JSONC non può essere letto come JSON standard?

JSONC è una convenzione de facto, non un RFC separato, quindi i parser standard rifiutano i commenti. JSON.parse su tale file lancia Unexpected token /, puntando al commento invece che ai dati. Solo la configurazione letta da un editor o da un parser dedicato dovrebbe essere scritta come JSONC.

Devo inviare un file JSON5 a un'API?

No. API, colonne JSON dei database e code analizzano JSON rigoroso, quindi le virgolette singole, le chiavi senza virgolette e le virgole finali di JSON5 vengono rifiutate. JSON5 è per la configurazione locale che gli umani modificano; convertilo in JSON standard prima che attraversi il confine di un sistema.

Ulteriori letture