As linhas do texto fonte e as do valor são diferentes
Em uma string JSON, uma barra invertida seguida de n representa uma quebra. Duas barras preservam uma barra e n como dois caracteres no valor. Ambos os exemplos são válidos, mas os valores text analisados têm comprimentos 3 e 4.
{"text":"A\nB"}
{"text":"A\\nB"}
JSON.parse('{"text":"A\\nB"}').text.length // 3
JSON.parse('{"text":"A\\\\nB"}').text.length // 4Uma quebra real dentro da string causa erro
RFC 8259 exige escapes para caracteres de controle U+0000 a U+001F em strings, incluindo LF literal. Entre tokens são permitidos LF, CR, tabulações e espaços. Nos testes, LF literal dentro da string foi rejeitado, mas um objeto em várias linhas foi aceito.
const invalid = '{"text":"A' + '\n' + 'B"}';
formatJSON(invalid); // throws
formatJSON('{\n"text":"AB"\n}'); // acceptedSepare a formatação da interpretação do valor
O Moyoutil preserva os tokens das strings e altera a indentação externa. Não exibe \n como uma quebra real dentro do valor. A minificação também preserva os escapes. Em caso de erro, examine aspas e barras perto da posição indicada. Adicionar barras em toda a entrada pode alterar valores corretos.
Execute a formatação e validação com os exemplos e compare a saída minificada. Para um valor com quebra, serialize a string com JSON.stringify ao gerar JSON e confira o valor com JSON.parse. Validar sintaxe não valida os campos obrigatórios do esquema de uma API.
Perguntas frequentes
Minificar JSON remove quebras nos valores?
Não. Reduz espaços fora das strings. Esta ferramenta mantém os escapes e as quebras dos valores analisados.