Formatar texto JSON
Transforme uma linha de dados espremida em texto bem indentado: o exemplo de 53 bytes volta com 79 bytes legíveis, dois espaços por nível. Se algo estiver quebrado, você recebe a posição exata em vez de um palpite. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- {"name":"Ada","skills":["math","code"],"active":true}
- Recuo
- 2
- Bytes de entrada
- 53
- Bytes de saída
- 79
indentação estável e posição do erro
Por que verificar antes de indentar
Um formatador que só acrescenta quebras de linha não sabe se os dados estão íntegros. Esta ferramenta primeiro lê o texto inteiro com o mesmo rigor de um programa e só depois o escreve de novo com um número fixo de espaços por nível. É essa leitura que garante que cada chave tem seu par, que cada texto entre aspas está fechado, que os números são válidos e que não sobra vírgula pendurada no fim de uma lista. Se algo falhar, você recebe a posição do caractere onde a leitura parou e pode ir direto à vírgula, à aspa ou ao fragmento sobrando, sem percorrer a olho uma linha sem fim.
Para ler, revisar ou compactar
Dois ou quatro espaços são o usual quando uma pessoa vai ler o resultado, por exemplo numa revisão de código, num chamado de suporte ou num despejo de registros. Com zero espaços acontece o contrário: se a verificação passar, tudo volta numa única linha compacta, então você valida e reduz numa só etapa. A ferramenta nunca conserta dados quebrados nem reordena nada: o que entra válido sai com o mesmo conteúdo e apenas com espaços novos. Se o que você tem é texto comum que quer converter para esse formato, isso é trabalho de outra ferramenta.
O que acontece de verdade ao arrumar o texto
Diferente de um formatador só visual que insere quebras de linha sem entender a estrutura, um formatador verdadeiro precisa analisar primeiro: só então pode garantir que as chaves coincidem, as strings estão fechadas, os números são válidos e vírgulas finais são rejeitadas. Indent zero produz serialização compacta em uma linha após parse bem-sucedido—útil quando você quer validação e minificação em um passo. Dois ou quatro espaços são as escolhas usuais para revisão humana.
Essa contenção mantém o contrato simples: válido entra, formatado sai; inválido entra, erro claro com posição. Contagens de bytes de entrada e saída são incluídas para que pipelines registrem razões de expansão quando grandes blobs minificados viram documentos multilinha.
Perguntas frequentes
O que o indent 0 faz?
A string ainda é totalmente analisada primeiro, então entrada inválida ainda falha com uma posição.
Por que a ferramenta diz que meu texto é inválido?
Porque a leitura rigorosa parou em um caractere específico, e a ferramenta mostra a posição dele. Normalmente é uma vírgula sobrando no fim de uma lista, uma aspa sem fechar ou uma chave sem par. Corrija nesse ponto e tente de novo.
Qual indentação usar, dois ou quatro espaços?
As duas são as escolhas comuns quando uma pessoa vai revisar o resultado. Se você não escolher nada, são dois espaços por nível, e dá para usar qualquer valor de 0 a 8.
A formatação muda a ordem ou o conteúdo dos meus dados?
Não. Só mudam os espaços e as quebras de linha. A ferramenta não reordena os nomes, não conserta o que está quebrado e não busca nada fora do seu texto, então o conteúdo sai idêntico.
Quanto o texto cresce depois de formatado?
A ferramenta mostra o tamanho antes e depois, em bytes. No exemplo, um texto de 53 bytes passa para 79 com dois espaços por nível: a diferença são as quebras de linha e a indentação.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/text/json-pretty-print \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"{\"name\":\"Ada\",\"skills\":[\"math\",\"code\"],\"active\":true}"}'const res = await fetch("https://api.kit.forhosting.com/text/json-pretty-print", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "{\"name\":\"Ada\",\"skills\":[\"math\",\"code\"],\"active\":true}"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/json-pretty-print",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "{\"name\":\"Ada\",\"skills\":[\"math\",\"code\"],\"active\":true}"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/json-pretty-print", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"{\\"name\\":\\"Ada\\",\\"skills\\":[\\"math\\",\\"code\\"],\\"active\\":true}"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"{\"name\":\"Ada\",\"skills\":[\"math\",\"code\"],\"active\":true}"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/json-pretty-print", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "{\"name\":\"Ada\",\"skills\":[\"math\",\"code\"],\"active\":true}"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.json_pretty_print",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_tokens | 20000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
JSON minificado, em uma linha ou com indentação inconsistente é difícil de ler em revisões de código, tickets de suporte e dumps de log. Esta ferramenta de formatação de texto JSON aceita uma string JSON bruta, valida com análise estrita e re-serializa o valor com indentação de espaços consistente para que objetos e arrays aninhados se alinhem de forma previsível. Quando a carga é inválida, a tarefa falha com invalid_input e informa a posição de caractere do erro de análise para que você possa ir direto à vírgula, aspas ou fragmento sobrante incorretos. Sem reordenar chaves além da serialização JSON padrão, sem idas à rede e sem tokens de modelo—apenas parse e stringify determinísticos ao preço base publicado US$ 0,002 por chamada bem-sucedida.
O que a formatação de uma string JSON realmente faz
Formatar texto JSON significa pegar uma string que afirma ser JSON, analisá-la em um valor e reescrever esse valor com um número fixo de espaços por nível de aninhamento. Esta capacidade usa o campo text como string de origem, executa um parse JSON estrito e devolve um novo campo text com indentação consistente controlada pelo parâmetro opcional indent (inteiro de zero a oito, padrão dois espaços). O algoritmo não busca schemas remotos, não repara JSON quebrado e não reordena chaves de objeto além da ordem natural de serialização do motor sobre o objeto analisado.
Contrato de entrada, campos de resposta e posições de erro de análise
Opcionalmente envie indent como inteiro entre zero e oito; omita para usar dois espaços. Quando o parse falha, a mensagem de erro sempre inclui uma posição de caractere: motores que reportam “at position N” são ecoados com esse N, entrada incompleta é mapeada para o fim da string e outras falhas defaultam para posição zero para que o cliente sempre tenha um alvo de cursor. Envie por POST um corpo JSON com a string text obrigatória contendo o documento a formatar. Text vazio, não string e indent fora do intervalo falham com invalid_input e não são cobrados. Em sucesso a resposta inclui text (o documento formatado), indent (o espaçamento efetivo usado), bytes_in (comprimento UTF-8 da string de origem) e bytes_out (comprimento UTF-8 do resultado formatado). Exemplo: text igual a um objeto minificado com arrays aninhados e indent igual a dois devolve JSON multilinha com passos de dois espaços e chaves casadas. Exemplo de falha: um objeto truncado sem chave de fechamento gera invalid_input citando a posição perto do fim do fragmento. Combine este endpoint com o editor ou visualizador de log saltando para o deslocamento informado; você não precisa de uma segunda chamada de validação.
Onde formatar texto JSON gera valor
Jobs de CI podem rejeitar ou reescrever arquivos de configuração que chegam minificados de geradores upstream, falhando rápido com posição de parse quando um artefato de release é truncado no meio do upload. Validação falha não consome saldo. Desenvolvedores colam respostas de API em chats e tickets; formatar texto JSON transforma linhas opacas em árvores revisáveis sem instalar formatador de desktop. Ferramentas de suporte mostram aos clientes o deslocamento exato de um corpo de webhook malformado em vez de um banner genérico de “JSON inválido”. Como a implementação é parse de nível A puro, cada chamada bem-sucedida custa o preço base publicado US$ 0,002 sem tokens de modelo e sem rede de saída. Prefira este contrato texto-entrada e texto-saída quando o pipeline já guarda JSON como string—logs, conteúdos de arquivo, corpos de mensagem—em vez de objeto pré-analisado.
Casos de integração
Dumps legíveis de API e webhooks
Transforme corpos de requisição ou resposta minificados em JSON indentado para tickets, chats e post-mortems, com posição de parse quando o dump está truncado.
Checagens de config e fixtures em CI
Valide e formate fixtures JSON em pipelines; faça o job falhar com invalid_input e um deslocamento de caractere quando um gerador emite sintaxe quebrada.
Suporte e salto ao erro no editor
Mostre a agentes de suporte e usuários a posição exata de caractere de um erro de sintaxe JSON para corrigirem vírgulas, aspas ou chaves faltantes com rapidez.
Perguntas técnicas
Como formatar uma string JSON?
Envie o JSON no campo text e opcionalmente defina indent (0–8, padrão 2). Em sucesso você recebe text indentado mais bytes_in e bytes_out.
O que acontece se o JSON for inválido?
A tarefa falha com invalid_input e uma mensagem que inclui a posição de caractere do erro de análise para localizar o token incorreto. Entrada inválida não é cobrada.
A formatação de texto JSON ordena as chaves do objeto?
Não. As chaves mantêm a ordem natural do motor após o parse. A ferramenta foca em indentação e validação, não em ordenação determinística de chaves.
Quanto custa a API de formatação de texto JSON?
A ferramenta no navegador é gratuita. Solicitações API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.