Formatar, minificar e validar
Formatar indenta o JSON para que uma pessoa consiga ler sua estrutura; minificar tira todos os espaços opcionais para reduzir o tamanho da transferência. Só a apresentação muda: os dados são idênticos nos dois casos, então alternar entre eles nunca altera um valor.
A validação tenta interpretar o texto e informa se conseguiu. Se falhar, indica ainda onde o analisador parou, que não é onde o erro começou mas onde ficou impossível prosseguir. A causa real costuma estar um pouco antes no texto.
A largura da indentação é questão de gosto e de convenção da equipe. Dois espaços economizam espaço horizontal em dados muito aninhados, quatro deixam a estrutura mais fácil de percorrer com os olhos, e zero deixa só quebras de linha, o que serve para ler uma entrada de cada vez.
Por que o JSON costuma falhar na leitura
Uma vírgula sobrando depois da última entrada é a causa mais comum. Os literais de objeto do JavaScript a permitem e o padrão JSON não, e é fácil deixá-la ao apagar uma entrada. Olhe primeiro logo antes de cada colchete de fechamento.
Aspas simples não são JSON válido. Tanto as chaves quanto os valores de texto precisam de aspas duplas, e o costume do JavaScript de deixar chaves sem aspas não se transfere. Isso morde sobretudo quando um trecho é copiado direto do código-fonte.
Comentários também não fazem parte do padrão. Os comentários de barra dupla comuns em arquivos de configuração só são aceitos por extensões como JSON5 ou JSONC, então um analisador padrão precisa que sejam removidos. NaN, Infinity e undefined também não têm representação.