JSON permite quatro espaços de sintaxe

RFC 8259 permite U+0020, tabulação U+0009, nova linha U+000A e retorno U+000D. NBSP U+00A0 não faz parte da lista. formatJSON aceita espaço comum depois dos dois-pontos e rejeita NBSP. A notação \u é um escape JavaScript que cria o caractere na execução.

formatJSON('{"n":\u00201}'); // accepted
formatJSON('{"n":\u00A01}'); // throws
U+0020 fora de uma string passa na validação; U+00A0 falha
Diagrama próprio: verde indica aceitação e vermelho rejeição. Os códigos correspondem às entradas testadas; não é captura da interface.

RFC 8259 §2: JSON Grammar

NBSP dentro de uma string é dado

Entre aspas duplas, NBSP é válido neste exemplo. Formatação e minificação o preservam. Substituí-lo em todo o texto muda o código entre A e B de 160 para 32. Não altere indiscriminadamente espaços nos dados ao corrigir sintaxe.

const source = '{"text":"A\u00A0B"}';
JSON.parse(formatJSON(source, 0).output).text.codePointAt(1) // 160
JSON.parse(source.replaceAll("\u00A0", " ")).text.codePointAt(1) // 32

RFC 8259 §7: Strings

Confira linha, coluna e o controle para ir ao erro. Guarde o original, redigite o espaço inválido fora das strings e valide. Não há detecção específica de NBSP nem correção automática. A validação de sintaxe não verifica o esquema de uma API.

Perguntas frequentes

A minificação corrige espaços inválidos?

Não. formatJSON verifica sintaxe antes da saída, portanto também rejeita NBSP fora das strings na minificação. Dentro delas, o caractere permanece.