UTILS.
100% nel browser
{ }

Da oggetto JS a JSON rigoroso

Ripara un oggetto letterale JavaScript sciolto — chiavi senza virgolette, apici singoli, virgole finali, commenti — in JSON rigoroso e valido, senza eval.

— l'output appare qui —

Informazioni su questo strumento

Lo strumento Da oggetto JS a JSON rigoroso ripara un oggetto letterale JavaScript o in stile JSON5 sciolto in JSON rigoroso e valido. È costruito su un tokenizer scritto a mano — non usa mai eval o new Function — quindi è sicuro sotto una Content Security Policy rigorosa e sicuro per incollarvi testo non attendibile. Tutto avviene nel tuo browser.

Accetta le cose che il JSON vero rifiuta: chiavi identificatore senza virgolette, stringhe con apici singoli, virgole finali prima di ] o }, commenti // di riga e /* di blocco */, esadecimali (0xFF), letterali ottali e binari, numeri con più iniziale e punto iniziale (+1, .5), e i valori undefined, NaN e Infinity. Le chiavi vengono ri-virgolettate con doppie virgolette, le stringhe vengono ri-escapate correttamente, i commenti e le virgole finali vengono rimossi, e i numeri vengono normalizzati a semplici numeri JSON. Scegli come trattare undefined (convertire in null o eliminare la chiave) e i numeri non finiti (convertire in null o sollevare un errore), poi il valore viene ri-serializzato con JSON.stringify all'indentazione che scegli — 2 spazi, 4 spazi, tab o minificato.

Quando l'input non può essere analizzato, lo strumento segnala il primo errore di sintassi con la sua riga e colonna così puoi trovare il problema rapidamente. Questo completa un formattatore JSON rigoroso, che semplicemente rifiuta l'input sciolto — qui l'obiettivo è recuperare output di console copiato, snippet di configurazione e oggetti modificati a mano in JSON che qualsiasi parser accetterà.

Domande frequenti

Quale sintassi sciolta accetta?
Chiavi senza virgolette, stringhe con apici singoli, virgole finali, commenti // e /* */, numeri esadecimali/ottali/binari, numeri con più iniziale e punto iniziale, e i letterali undefined, NaN e Infinity — le cose comuni che rendono gli oggetti JS copiati non validi come JSON.
Usa eval per l'analisi?
No. Usa un tokenizer scritto a mano e un parser a discesa ricorsiva, mai eval o new Function, quindi funziona sotto una Content Security Policy rigorosa ed è sicuro per input non attendibile. Produce sempre e solo dati, non esegue mai codice.
Come vengono gestiti undefined, NaN e Infinity?
JSON non ha tali valori. Scegli tu: undefined può diventare null o avere la sua chiave eliminata, e NaN/Infinity possono diventare null o sollevare un errore. Questo mantiene l'output rigorosamente valido come JSON in entrambi i casi.
Cosa succede quando l'input non è valido?
Il parser si ferma al primo vero errore di sintassi e lo segnala con la riga e la colonna in cui si è verificato, così puoi individuare e correggere il carattere problematico invece di indovinare.

Altri strumenti