JSON Toolkit

JSON può avere commenti

In sintesi: RFC 8259 non ha sintassi per i commenti, quindi // e i commenti a blocco fanno lanciare un errore a JSON.parse. Usa invece JSON5 o JSONC, un campo _comment, una description di Schema o YAML.

Principiante~3 min di letturaPubblicato il 2026-10-30Aggiornato il 2026-10-30
Perché JSON non ha commenti e cosa usare invece

In sintesi: non inserire mai commenti nel JSON standard; usa JSONC o JSON5 per la configurazione locale che solo gli umani modificano, sposta le spiegazioni in una description di JSON Schema quando il file attraversa sistemi, e passa a YAML o TOML quando il volume delle annotazioni cresce.

No.

Qualsiasi parser conforme allo standard rifiuta questo:

{
  "port": 8080 // local development only
}

Chrome riporta SyntaxError: Unexpected token }. Il parser ha incontrato /, che non può iniziare alcun valore JSON, e si è fermato.

Perché la specifica omette intenzionalmente i commenti

RFC 8259 definisce sei valori: oggetto, array, numero, stringa, true/false, null. Non esiste alcuna produzione per i commenti.

I commenti furono proposti presto e respinti per una ragione concreta: una volta che i commenti sono legali, qualcuno li usa per veicolare direttive — inclusioni condizionali, variabili di template — e ogni parser sviluppa il proprio dialetto. L'interoperabilità si rompe al primo passaggio. JSON è deliberatamente solo dati, senza nulla di eseguibile al suo interno.

Quattro modi per conservare le tue note

1. Usa un superset. JSON5 e JSONC accettano entrambi gli stili di commento. Il settings.json e il tsconfig.json di VS Code sono JSONC. Il costo è reale: JSON.parse continua a rifiutarli, e API, pipeline di log e code di messaggi di solito accettano solo JSON standard. Il tuo commento viene eliminato silenziosamente o lancia un errore da qualche parte a valle.

2. Metti la nota nei dati.

{
  "_comment": "port assigned by ops, do not change",
  "port": 8080
}

Funziona ovunque, ma inquina il modello: ogni consumatore deve sapere quali chiavi ignorare, e la tua definizione di tipo guadagna un campo che non è davvero un dato.

3. Usa una description di Schema. description è pensata per umani e strumenti. I validatori la mostrano, gli editor la visualizzano al passaggio del mouse, e non entra mai nel payload. È l'unica opzione che sopravvive alla manutenzione a lungo termine senza rompere la compatibilità.

4. Cambia il formato del file. Se il file esiste per essere modificato a mano, YAML o TOML supportano nativamente i commenti. Combattere con JSON qui è fatica sprecata.

Scegliere

Situazione Risposta
Inviato a un altro sistema, tramite un'API o una coda Niente commenti; documenta nello Schema o in documentazione esterna
Configurazione letta solo da umani ed editor JSONC, con estensione .jsonc
Necessita di strumenti universali e spiegazioni inline JSON standard più description di Schema
Configurazione lunga con molte annotazioni Passa a YAML

FAQ

Perché un campo _comment inquina il modello?

Perché diventa parte dei dati. Ogni consumatore deve sapere quali chiavi ignorare, e la definizione di tipo guadagna un campo che non è davvero un dato di business.

La spiegazione dovrebbe stare in una description di JSON Schema?

Sì. description resta fuori dal payload, mentre i validatori la mostrano e gli editor la visualizzano al passaggio del mouse, quindi è l'unica opzione che sopravvive alla manutenzione a lungo termine senza rompere la compatibilità.

JSONC o JSON5 possono essere analizzati da JSON.parse?

No. JSON.parse rifiuta ancora i commenti, e API, pipeline di log e code di messaggi di solito accettano solo JSON standard, quindi il commento viene eliminato o lancia un errore da qualche parte a valle.

Strumenti

  • Parser JSON5 — incolla una configurazione con commenti e vedi la struttura risolta
  • Formattatore e validatore JSON — il JSON illegale viene riportato con riga e colonna, quindi il commento incriminato è evidente

Ulteriori letture