Cole JSON ou YAML, escolha a direção e leia o outro formato na mesma caixa. A análise acontece no navegador, comentários e formatação original não são mantidos e os erros são indicados com a posição.
Funciona localmente no seu navegadorUma única caixa de texto converte nos dois sentidos. YAML → JSON lê a entrada como YAML e imprime o JSON correspondente; JSON → YAML lê JSON estrito e grava YAML. Esses dois botões são os únicos controles, então a direção fica sempre explícita.
Os dois analisadores vêm com a página e rodam nesta aba. Nada é enviado, a conversão continua funcionando sem conexão depois que a página carrega e o texto fica na sua máquina.
JSON → YAML usa o analisador JSON do navegador, então a entrada precisa ser JSON válido: chaves entre aspas duplas, sem comentários, sem vírgula final e sem valores sem aspas. O YAML é gravado pelo gerador YAML 1.2 que acompanha a página: identação de dois espaços, escalares de bloco “|-” para textos com quebra de linha e aspas apenas onde o valor mudaria de tipo.
YAML → JSON lê o esquema básico 1.2. true e false são booleanos, enquanto yes, no, on e off continuam texto; 0x1F e 0o17 são números e 1_000 continua string; uma data como 2024-01-02 fica como a string “2024-01-02” em vez de virar um carimbo de data e hora. O resultado é JSON com dois espaços de identação.
Aliases e chaves de mesclagem são resolvidos na leitura. Um mapa que compartilha “base: &b” com “<<: *b” chega ao JSON com as chaves herdadas já escritas, sem sobrar nenhuma chave “<<” literal. O JSON não expressa âncoras, então a ida e volta devolve um objeto comum.
Documentos separados por “---” são convertidos um a um, na ordem. Três documentos geram um array JSON com três itens e a linha de status informa “3 documentos”; se um deles não puder ser lido, a mensagem indica qual é e a caixa de resultado é esvaziada.
Chaves repetidas têm tratamento diferente nos dois formatos: o JSON mantém o último valor sem avisar, enquanto um YAML com chave duplicada é recusado com uma mensagem. Inteiros fora de ±9007199254740991 não podem ser guardados com exatidão em JavaScript, então são arredondados para o valor representável mais próximo e a linha de status informa quantos; .inf, -.inf e .nan não existem em JSON e viram null, também com aviso.
Um erro de sintaxe esvazia o resultado anterior em vez de deixá-lo na tela, então uma conversão antiga nunca é copiada por engano, e um campo vazio recebe um aviso em vez de uma conversão. Resultados com mais de cerca de 100 000 caracteres aparecem sem realce de sintaxe: o texto está completo e dispensar as cores é o que evita que um documento de centenas de kilobytes trave a aba.