Che cosa fa questo strumento
Un letterale di stringa JSON diventa il testo che rappresenta. "caf\u00e9" dà café, "due\nrighe" dà due righe, e "\ud83d\ude00" dà l’emoji: una coppia surrogata è un carattere, non due metà rotte.
Le virgolette sono facoltative
Funzionano entrambe le forme:
"caf\u00e9"
caf\u00e9
È una scelta. Una stringa JSON arriva di rado con le virgolette intatte: la copi da una riga di log, da un git diff, da uno stack trace, da un messaggio d’errore che ha citato solo l’interno. Pretendere le virgolette vorrebbe dire rimetterle a mano ogni volta.
Il prezzo è piccolo e va detto chiaramente: un input nudo che per caso è JSON valido di altro tipo — [1,2], null — viene letto come testo, perché è questo che significa qui un frammento nudo. Solo un input tra virgolette viene analizzato come letterale.
Un rifiuto dice che cosa e dove
Un input che non è una stringa JSON viene rifiutato anziché decodificato a metà, e il messaggio nomina la causa:
| Input | Messaggio |
|---|---|
a"b | Unescaped quotation mark at position 1: write it as \" |
"ab\q" | Unknown escape "\q" at position 3 |
"a\u12" | Invalid \u escape at position 2: four hexadecimal digits expected |
"abc | The opening quotation mark has no closing quotation mark |
{"a":1} | Expected a JSON string, found a JSON object |
Le posizioni contano da zero e si riferiscono al testo che hai incollato, così il numero ti porta al carattere.
Vale la pena dirlo perché prima non era così: ognuno di questi casi produceva l’unico messaggio Invalid JSON string escape sequence. Un oggetto incollato non è un errore di escape, e sentirsi dire il contrario manda a cercare nel posto sbagliato. Era un difetto reale di questo strumento, trovato scrivendo questa pagina e corretto.
Nulla viene indovinato
Un escape sconosciuto è un errore, non un carattere. \q non è JSON valido, e decidere che «voleva probabilmente dire q» restituirebbe un testo sottilmente diverso da quello della sorgente: il genere di differenza che riaffiora tre sistemi più in là.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.