Vai al contenuto
jsonbeautifiers
Italiano
V8 Verificato eseguendo il parser su Node v24.15.0, V8 13.6.233.17.

Bad control character in string literal in JSON at position N (line L column C)

Una stringa del tuo documento contiene un carattere di controllo letterale: quasi sempre un vero a capo, a volte una tabulazione. Le stringhe JSON non possono contenere caratteri sotto U+0020 senza escape. Un a capo va scritto come \n, una tabulazione come \t. La posizione indica il carattere incriminato.

Incolla il tuo JSON e vedi esattamente dove si rompe

Input

Nulla di ciò che incolli lascia il tuo browser. L’allowlist connect-src ne fa una garanzia del browser anziché una promessa. Verificalo tu stesso

Che cosa lo provoca davvero

In ordine di quanto spesso ciascuno si rivela essere la risposta.

  1. 01 Testo su più righe incollato direttamente dentro una stringa

    SQL, HTML, un estratto di log o un messaggio di errore con veri a capo dentro. Per il parser, l’a capo chiude la stringa.

    Si rompe

    {
      "query": "SELECT *
    FROM users"
    }

    Funziona

    {
      "query": "SELECT *\nFROM users"
    }
  2. 02 JSON costruito concatenando stringhe

    È la causa profonda di quasi ogni caso. Il JSON assemblato a mano non esegue l’escape dei valori che ci interpoli dentro. Serializza invece l’oggetto e il problema non può proprio verificarsi.

    Si rompe

    const body = '{"note": "' + note + '"}';

    Funziona

    const body = JSON.stringify({ note });
  3. 03 Una tabulazione arrivata con un copia e incolla

    Le tabulazioni sono invisibili e finiscono facilmente dentro le stringhe quando si copia da un foglio di calcolo o da un terminale. Escapale come \t, oppure toglile prima di costruire il documento.

  4. 04 Fine riga di Windows dentro un valore

    Anche il ritorno a capo, U+000D, è un carattere di controllo. Testo letto da un file Windows e incorporato in una stringa si porta dietro \r oltre a \n.

Lo stesso errore in altri runtime

Il problema di fondo è identico; cambia solo la formulazione. Se un collega segnala uno di questi messaggi, sta guardando esattamente la stessa cosa che vedi tu.

Python Invalid control character at: line 1 column 8 (char 7)
Java (Jackson) Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value

Domande frequenti

Quali caratteri vanno escapati?
Tutto da U+0000 a U+001F, più la virgoletta doppia e il backslash. JSON definisce escape brevi per backspace, salto pagina, a capo, ritorno a capo e tabulazione; tutto il resto in quell’intervallo richiede la forma \u, per esempio \u0000.
Posso far accettare quei caratteri al parser?
Jackson ha ALLOW_UNESCAPED_CONTROL_CHARS e alcuni parser hanno interruttori simili, ma questo nasconde il problema anziché risolverlo, e il documento resta non valido per ogni altro consumatore. Fai l’escape nel punto in cui il JSON viene prodotto.

Risolvilo adesso

Incolla il payload nello strumento qui sopra, oppure vai direttamente a quello creato per questo compito.

Riparalo automaticamente