Ogni documento JSON e gia un espressione JavaScript valida. Puoi incollare
JSON in un assegnamento const config = e si esegue. Il lavoro interessante
e il contrario: i veri letterali di oggetti JavaScript sono pieni di cose
che JSON vieta, e un convertitore che indovina cosa volevano perdono dati
mentre segnala successo.
Utilizzo del convertitore JSON a JavaScript
Scegli una direzione e premi Converti. Scrivendo JavaScript, una chiave di
oggetto che e un identificativo valido e scritta senza virgolette, quindi
"name" diventa name, mentre una chiave come "display name" resta tra
virgolette perche scriverla senza virgolette cambierebbe la sua ortografia.
Un oggetto o array vuoto resta su una riga. I numeri passano attraverso il
flusso di token invece che attraverso JSON.parse, quindi un intero di
venti cifre torna con le venti cifre esatte.
Cosa accetta il lettore
Rileggendo JavaScript in JSON, lo strumento capisce i letterali di oggetti
che incoleresti davvero da un file di configurazione: chiavi senza
virgolette, stringhe tra apici, commenti // e /* */, virgole finali,
e un nome const, let o var opzionale all inizio con un punto e
virgola alla fine. Un letterale di template senza interpolazione e accettato
anche, perche contiene testo puro.
Un ortografia di numero che JSON rifiuta e normalizzato alla sua esatta forma JSON:
const numbers = { a: .5, b: 5., c: 5.e3 }
{
"a": 0.5,
"b": 5,
"c": 5e3
}
Cosa viene rifiutato, e perche
Tutto che JSON non puo contenere viene rifiutato per nome invece di
indovinato. undefined, NaN e Infinity non hanno numero o valore JSON,
quindi vengono rifiutati. Anche numeri esadecimali, ottali e binari,
separatori di cifre con trattino basso come 1_000, e uno zero iniziale,
tutti cambierebbero di significato se JSON li leggesse. Un espressione
regolare, una funzione, una parola nuda, e interpolazione di template
${...} vengono rifiutati anche, perche sono codice, non dati.
Due rifiuti meritano un occhiata piu attenta. Una chiave che appare due
volte in un oggetto viene rifiutata, perche JSON non ha modo di contenere
entrambi i valori sotto un unico nome. E una chiave __proto__ il cui
valore e un oggetto o null viene rifiutata, perche in un letterale di
oggetto JavaScript quell ortografia non crea una proprieta. Imposta il
prototype del nuovo oggetto, quindi convertirla in JSON con una chiave
__proto__ ordinaria inventerebbe una proprieta che il codice originale
non ha mai avuto.
Perche undefined non viene trasformato in null per default
JSON non ha undefined, quindi un convertitore deve fare qualcosa. Scrivere
null cambia silenziosamente il significato dei dati: un undefined in un
oggetto di configurazione di solito significa che un campo non e ancora
configurato, il che non e la stessa cosa di un null che il codice controlla
dopo. Lo strumento rifiuta per default, e l opzione Convert undefined to null
esiste per quando vuoi davvero quel significato.
Viaggio di andata e ritorno
Convertire un documento nell altro formato e il vero test di se le regole di virgolette e rifiuto sono corrette. Un letterale di oggetti con chiavi senza virgolette, apici e una virgola finale torna come JSON con ogni chiave virgolettata e ogni cifra intatta, e convertire di nuovo quel JSON torna lo stesso oggetto. Una regola sbagliata di solito si mostra solo quando riconverti e confronti.