Transform - JSON → TOON
Converte um JSON em TOON (Token-Oriented Object Notation), formato compacto para reduzir tokens em prompts de LLM. Tudo processado no navegador.
Opções
Input
Output
Clique em "Transformar" para ver o resultado aqui.
O que é o formato TOON
TOON (Token-Oriented Object Notation) é um formato de texto para representar os mesmos dados de um JSON, pensado para ocupar menos tokens quando esse texto é enviado dentro do prompt de um modelo de linguagem (LLM). Tokens são a unidade que serviços como o ChatGPT ou o Claude cobram e limitam — quanto menos tokens um prompt usa, mais barato ele sai e mais espaço sobra para o resto da conversa.
O JSON gasta uma boa parte desses tokens em pontuação que se repete: chaves, colchetes, aspas em volta de cada texto e, em uma lista de objetos parecidos, o nome de cada campo copiado em cada item. O TOON remove essa repetição.
Como funciona
A ideia central: quando uma lista tem vários objetos com os mesmos campos, o TOON escreve os nomes dos campos uma única vez, em um cabeçalho, e cada item vira uma linha só com os valores, separados por vírgula, como uma tabela CSV. Para objetos aninhados, ele usa indentação, no estilo do YAML.
{
"users": [
{ "id": 1, "name": "Ana", "role": "admin" },
{ "id": 2, "name": "Beto", "role": "user" },
{ "id": 3, "name": "Cátia", "role": "user" }
]
}users[3]{id,name,role}:
1,Ana,admin
2,Beto,user
3,Cátia,userNeste exemplo, o JSON tem 167 caracteres e o TOON tem 66 — cerca de 60% menor (contagem de caracteres desta página, calculada com o conversor real; a economia de tokens de um LLM costuma ficar entre 30% e 60%, segundo a especificação do formato, variando com o tamanho e o formato dos dados).
users[3]diz que a lista tem 3 itens — o modelo (e quem está lendo) sabe de antemão quantas linhas esperar, o que ajuda a conferir se algum item faltou.{id,name,role}é o cabeçalho: o nome de cada campo aparece uma vez só, não em cada item.- Cada linha seguinte é um item, na mesma ordem dos campos do cabeçalho.
Dados irregulares ou muito aninhados
Nem todo JSON tem essa forma de tabela. Quando os itens de uma lista têm campos diferentes entre si, o TOON usa uma forma de lista simples (uma linha por item, sem tabela) — ainda uma conversão válida e sem perdas, só que com menos economia de tokens:
{
"events": [
{ "type": "login", "userId": 1 },
{ "type": "purchase", "userId": 2, "amount": 49.9, "coupon": "PROMO10" },
{ "type": "logout", "userId": 1, "durationMin": 12 }
]
}events[3]:
- type: login
userId: 1
- type: purchase
userId: 2
amount: 49.9
coupon: PROMO10
- type: logout
userId: 1
durationMin: 12Quando usar (e quando evitar)
- Vale a pena: listas grandes e uniformes (mesmos campos em todo item) dentro de um prompt para um LLM — resultados de busca, linhas de uma planilha, registros de um banco, histórico de eventos parecidos entre si.
- Ganho pequeno: dados muito aninhados, com poucos itens, ou com formato irregular entre os itens de uma lista.
- Não use: para se comunicar com uma API, salvar em banco de dados ou qualquer lugar que espera JSON de verdade — TOON serve para o texto dentro do prompt, não para substituir o JSON como formato de integração.
Um exemplo de uso dentro de um prompt
Aqui está a lista de usuários ativos:
users[3]{id,name,role}:
1,Ana,admin
2,Beto,user
3,Cátia,user
Liste os usuários com papel "user".Como usar esta ferramenta
- Escolha JSON → TOON para comprimir um JSON antes de colar em um prompt, ou TOON → JSON para o caminho inverso (por exemplo, se um modelo respondeu em TOON e você quer o JSON de volta).
- Cole o conteúdo no campo de entrada e clique em Transformar.
- Em Opções, dá para trocar o separador das colunas (vírgula, tabulação ou barra vertical) — útil se os seus dados já usam vírgula dentro dos valores.
Perguntas frequentes sobre TOON
TOON é um formato oficial, mantido por quem?
É uma especificação aberta e independente (não é do OpenAI, Google ou Anthropic), publicada com licença MIT em github.com/toon-format/spec. Como qualquer formato de texto, você pode usá-lo sem depender de nenhum serviço.
Preciso explicar o formato TOON para o modelo de IA entender?
Ajuda incluir uma frase curta explicando a notação na primeira vez que ela aparece na conversa (algo como "os dados abaixo estão em TOON: array[N]{campos} seguido de uma linha por registro, valores separados por vírgula"). Modelos atuais costumam entender bem TOON mesmo sem essa explicação, mas ela reduz o risco de má interpretação.
A conversão TOON → JSON é realmente sem perdas?
Sim, esse é o objetivo do formato: os mesmos objetos, listas e valores primitivos do JSON, incluindo texto, número, verdadeiro/falso e nulo. Nesta ferramenta, o codificador e o decodificador são testados automaticamente indo de JSON para TOON e voltando, conferindo que o resultado final é idêntico ao original.
Funciona com qualquer JSON, mesmo aninhado ou irregular?
Sim, mas a economia de tokens vem principalmente de listas uniformes (mesmos campos em todos os itens), convertidas no formato tabular. Listas com itens de formatos diferentes, ou muito aninhadas, caem para uma forma linha a linha, ainda válida, mas com uma economia bem menor.
Por que não usar TOON no lugar do JSON em todo lugar?
Porque APIs, bancos de dados e praticamente todas as ferramentas esperam JSON. TOON serve para o texto que você envia dentro de um prompt para um modelo de IA, não para substituir o JSON como formato de troca de dados entre sistemas.
Para que serve o Transform
O Transform converte dados e código de um formato para outro sem sair do navegador. Cole um JSON e receba as interfaces TypeScript, o schema Zod ou o JSON Schema correspondentes; converta arquivos de configuração entre YAML, JSON e TOML; transforme CSS em classes Tailwind. Tudo é processado localmente, sem enviar o seu conteúdo para servidor algum.
Como usar
- Clique no seletor Transformação e escolha a conversão. Dá para buscar pelo nome, e as últimas usadas e as favoritas ficam à mão.
- Cole o conteúdo no campo Input (ou use o botão Colar). Para JSON, o botão Formatar deixa o texto indentado.
- Se a conversão tiver opções, como o nome do tipo raiz, ajuste-as no painel acima dos editores.
- Clique em Transformar. O resultado aparece em Output, onde você pode copiar ou baixar o arquivo.
Exemplo: JSON para TypeScript
A conversão JSON → TypeScript lê a estrutura do JSON e gera uma interface para cada objeto, incluindo os objetos aninhados. Este é o resultado real da ferramenta para o JSON abaixo:
{
"id": 1,
"nome": "Ana Souza",
"email": "ana@exemplo.com",
"ativo": true,
"tags": ["admin", "beta"],
"endereco": { "cidade": "São Paulo", "cep": "01310-100" }
}interface Endereco {
cidade: string;
cep: string;
}
interface Usuario {
id: number;
nome: string;
email: string;
ativo: boolean;
tags: string[];
endereco: Endereco;
}Precisa validar os dados em tempo de execução, e não só tipá-los? A mesma entrada pode virar um schema Zod escolhendo JSON → Zod no seletor.
Conversões disponíveis
JSON
- JSON → TypeScriptConverte um JSON em interfaces TypeScript.
- JSON → ZodConverte um JSON em um schema Zod.
- JSON → JSON SchemaConverte um JSON em um documento JSON Schema (draft 2020-12).
- JSON → YAMLConverte um JSON em YAML.
- JSON → XMLConverte um JSON em XML.
- JSON → GraphQLConverte um JSON em um tipo GraphQL (SDL). Campos chamados "id" viram ID.
TOON
- JSON → TOONConverte um JSON em TOON (Token-Oriented Object Notation), formato compacto para reduzir tokens em prompts de LLM.
- TOON → JSONConverte TOON (Token-Oriented Object Notation) de volta em JSON, sem perdas.
YAML
- YAML → JSONConverte YAML em JSON.
- YAML → TOMLConverte YAML em TOML.
XML
- XML → JSONConverte XML em JSON.
TypeScript
- TypeScript → JavaScriptRemove as anotações de tipo, gerando o JavaScript equivalente.
- TypeScript → ZodConverte uma interface ou type do TypeScript em um schema Zod equivalente.
- TypeScript → JSON SchemaConverte uma interface ou type do TypeScript em um documento JSON Schema (draft 2020-12).
CSS
- CSS → TailwindConverte propriedades CSS em classes utilitárias do Tailwind (v3.1+), usando valores arbitrários quando não há uma classe exata.
- CSS → JS ObjectConverte CSS em um objeto JavaScript de estilos (React inline styles / styled-components).
- CSS → Template LiteralEnvolve o CSS em uma template literal `css`...`` (styled-components / emotion), reformatado.
Antes de usar o resultado
Revise o que foi gerado
Os tipos e schemas são inferidos de um único exemplo. Eles são um ótimo ponto de partida, mas não substituem o contrato oficial da sua API: confira campos opcionais, valores nulos e uniões antes de colocar em produção.Perguntas frequentes
Meus dados são enviados para algum servidor?
Não. A conversão acontece no seu navegador e o que você cola ou digita não é enviado para lugar nenhum. Nas conversões que envolvem TypeScript, o compilador é baixado do próprio site na primeira vez que você usa, e só o código do compilador é baixado, nunca o seu conteúdo sai do navegador.
Quais conversões estão disponíveis?
17 conversões: de JSON para TypeScript, Zod, JSON Schema, YAML, XML, GraphQL e TOON (o formato compacto para prompts de LLM); de TOON de volta para JSON; de YAML para JSON e TOML; de XML para JSON; de TypeScript para JavaScript, Zod e JSON Schema; e de CSS para classes Tailwind, objeto JavaScript e template literal.
Qual é o tamanho máximo do conteúdo?
O campo de entrada aceita até 10.000.000 de caracteres. Se você colar algo maior, a ferramenta avisa o tamanho e não cola nada, para o navegador não travar.
Por que meu JSON dá erro?
A mensagem de erro indica a posição do problema (linha e coluna). As causas mais comuns são aspas simples no lugar de aspas duplas, vírgula sobrando depois do último item, chaves sem aspas e comentários, que o formato JSON não permite.
Como o Transform trata listas com objetos diferentes?
Quando os itens de uma lista têm formatos diferentes, a ferramenta gera um tipo para cada formato e os combina em uma união (por exemplo, Pedido | Pedido1). Se você prefere um único tipo com campos opcionais, ajuste manualmente depois de gerar.
Os tipos gerados são definitivos?
Eles são inferidos a partir do exemplo que você fornece. Um campo nulo no exemplo vira null, uma lista vazia vira unknown[], e um campo ausente em alguns itens não é marcado como opcional. Use um exemplo representativo e revise o resultado antes de usar em produção.
A conversão de TypeScript para Zod cobre tudo?
Ela preserva objetos, listas, campos opcionais (key?: T ou T | undefined), valores nulos (T | null vira .nullable()), uniões de valores literais (viram z.enum) e apelidos de tipo usados nas interfaces. Ainda ficam simplificados, como z.unknown(), os genéricos, os utilitários do TypeScript (Partial, Pick, Record), as intersecções (&), as tuplas, os enums do TypeScript e o tipo Date. Revise o schema gerado.
A ferramenta é gratuita?
Sim, é gratuita e não exige cadastro nem conta.