100 % locale — i tuoi dati non lasciano mai il tuo browser

Testo in stringa JSON — incollalo in un payload

Trasforma il testo in un literal di stringa JSON, con le virgolette. Due terminatori di riga invisibili sono escapati: il valore si incolla in un curl.

Istantaneo Privato Zero cookie

Input Text

Output JSON String

Che cosa fa questo strumento

Il tuo testo diventa un letterale di stringa JSON: virgolette attorno e ogni carattere che non può stare grezzo sostituito dalla sua forma protetta.

  • " diventa \", una barra rovesciata diventa \\;
  • un ritorno a capo diventa \n, una tabulazione \t, un ritorno carrello \r;
  • gli altri caratteri di controllo diventano \u00XX.

é e 😀 restano come sono. JSON è Unicode, e una stringa leggibile vale più di un muro di escape.

Due caratteri che i codificatori comuni lasciano grezzi

U+2028 (separatore di riga) e U+2029 (separatore di paragrafo) escono come \u2028 e \u2029. Un codificatore JSON standard li lascia letterali.

Entrambe le scritture sono JSON valido. Quella protetta è più sicura, per una ragione storica ancora viva: in JavaScript prima di ES2019 quei due caratteri erano terminatori di riga, quindi un letterale di stringa che ne contenesse uno grezzo era un errore di sintassi. Tutto ciò che prende JSON e lo valuta come JavaScript — un vecchio eval, un endpoint JSONP, un bundler che incorpora un file di dati — ci inciampa. Proteggerli costa tre caratteri e rimuove l’intera classe di guasti.

Una metà surrogata isolata non produce un’uscita rotta

Un testo può contenere metà di una coppia surrogata: una stringa tagliata all’indice sbagliato, un campo troncato uscito da un database. L’uscita la protegge come \ud800 invece di emetterla grezza.

Conta perché una metà surrogata grezza non è codificabile in UTF-8 affatto. Protetta, il JSON resta valido, resta UTF-8, e il carattere danneggiato è visibile nell’uscita anziché corrompere il file che la trasporta.

Che cosa non viene protetto

La barra obliqua. \/ è JSON legittimo, e alcuni codificatori la emettono perché </script> non compaia mai nell’uscita, ma non è richiesta e rende il risultato meno leggibile.

Se incorpori il risultato in una pagina HTML, tratta </script> a livello HTML: un parser HTML chiude l’elemento a quella sequenza ovunque compaia, e nessun escape JSON lo cambia.

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.

Domande frequenti

Perché é non viene protetto come \u00e9?
Perché JSON è un formato Unicode e `é` è un carattere legittimo dentro una stringa. La codifica del documento lo trasporta. Proteggere tutto il non ASCII serve solo quando il canale è soltanto ASCII — a questo serve `ensure_ascii=True` in Python — e per il resto ingrossa l’uscita e la rende meno leggibile.
Perché l’uscita comprende le virgolette?
Perché una stringa JSON *è* le virgolette più il contenuto protetto. Consegnare solo l’interno inviterebbe a incollarlo dove le virgolette mancano, cioè esattamente dove l’escape smette di essere corretto. Puoi toglierle se il tuo template le fornisce già.
Posso incollarlo direttamente in un tag <script>?
Non a occhi chiusi. Il risultato è JSON valido, e i due terminatori di riga che rompevano i letterali JavaScript sono protetti. Ma un parser HTML chiude comunque l’elemento script al primo `</script>` del sorgente, dentro una stringa o no: un testo con quella sequenza va trattato a parte, a livello HTML.
` del sorgente, dentro una stringa o no: un testo con quella sequenza va trattato a parte, a livello HTML."}}]}

Convertitori correlati