JSON vs letterale di oggetto JavaScript

JSON assomiglia a un letterale di oggetto JavaScript, ma è un formato dati più piccolo, con sintassi più stretta e senza valori eseguibili.

Versione breve

Un letterale di oggetto JavaScript è codice sorgente. JSON è un formato di interscambio dati. La sovrapposizione è abbastanza grande da confondere, ma le regole sono diverse: chiavi e stringhe JSON richiedono virgolette doppie, JSON non ha commenti e JSON non può rappresentare funzioni, undefined, NaN, Infinity, oggetti Date o espressioni regolari.

Valori JSON validi

Un documento JSON può contenere un oggetto, array, stringa, numero, booleano o null. Le stringhe devono usare virgolette doppie. Anche le chiavi degli oggetti devono essere stringhe tra virgolette doppie. I numeri non possono usare forme esclusive di JavaScript come notazione esadecimale, NaN, Infinity o separatori numerici.

  • Stringa JSON valida: "hello"
  • Booleano JSON valido: true
  • Null JSON valido: null
  • Chiave di oggetto JSON valida: "name"

JavaScript valido ma JSON non valido

{ name: 'Ada', active: true, createdAt: new Date(), onSave() { return true }, tags: ['dev',], }

Versione JSON valida

{ "name": "Ada", "active": true, "createdAt": "2026-05-13T00:00:00.000Z", "tags": ["dev"] }

Perché le API rifiutano dati che sembrano JavaScript

I server API parsano i body delle richieste con un parser JSON, non con un motore JavaScript. È una garanzia di sicurezza e interoperabilità: qualunque linguaggio può parsare gli stessi dati senza eseguire codice. Se un body contiene commenti, metodi, undefined o new Date(), il server non può trattarlo come puro dato in sicurezza.

Come convertire in sicurezza

Sostituisci i valori eseguibili o specifici del linguaggio con dati puri. Le date diventano stringhe, i valori mancanti diventano null o chiavi omesse, i commenti vanno nella documentazione e le funzioni si rappresentano con campi dati espliciti come un nome di strategia o un tipo.