100 % local — seus dados nunca saem do seu navegador

YAML para JSON — IDs longos exatos

Converta YAML em JSON. Os inteiros grandes mantêm todos os algarismos e vários documentos viram um array, pronto para uma API ou um script.

Instantâneo Privado Zero cookies
Indentação

Entrada YAML

Saída JSON

O que esta ferramenta faz

YAML é um superconjunto de JSON, então quase toda a conversão transcorre sem história: mapeamentos viram objetos, sequências viram arrays, escalares viram strings, números, booleanos ou null.

O que vem a seguir é onde deixa de ser sem história.

Identificadores longos mantêm seus dígitos

id: 12345678901234567890
{ "id": 12345678901234567890 }

Parece banal, e é justamente esse o ponto. Um número JSON é um ponto flutuante de dupla precisão e guarda cerca de quinze dígitos; um identificador de vinte — um snowflake do Twitter, um bigint do PostgreSQL — antes voltava como outro número, em silêncio. Agora os dígitos são lidos exatos e escritos sem mudança.

As âncoras são expandidas, porque o JSON não as sustenta

defaults: &d
  retries: 3
web:
  <<: *d

vira duas cópias de retries: 3. O JSON não tem a noção de um valor presente em dois lugares, então o compartilhamento não sobrevive à travessia. A saída é maior que a entrada e nada se perde — mas a relação sim, e vale saber antes de converter um arquivo construído com âncoras e reconvertê-lo.

Vários documentos viram um array

--- separa documentos. O JSON não tem separador, então um fluxo de três documentos vira um array de três valores. Um documento único não é embrulhado: você recebe o objeto.

Os nulos, os três

~, null e um valor vazio significam null em YAML, e os três viram null. É um dos poucos pontos em que o JSON é mais simples que o YAML, e não o contrário.

O que esta conversão não pode decidir por você

yes é lido como a string "yes", porque é o que diz o YAML 1.2. Um arquivo escrito para o PyYAML, que aplica o YAML 1.1, queria dizer o booleano verdadeiro.

Nada no arquivo diz qual versão o autor tinha em mente. Se o seu YAML vem de uma ferramenta Python e um yes, no ou on puro importa, coloque aspas na origem — e saiba que a ambiguidade está no arquivo, não no conversor.

Privado por padrão

Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.

Perguntas frequentes

Por que meu identificador de 20 dígitos voltava errado?
Porque passava por um ponto flutuante de dupla precisão, que guarda cerca de quinze dígitos. `12345678901234567890` voltava `12345678901234567000` — outro número, sem nada que avisasse. Dá para pedir ao leitor de YAML que mantenha exatos os inteiros grandes, e agora se pede, então os dígitos sobrevivem.
O que acontece com minhas âncoras e aliases?
São resolvidos: cada `*alias` vira uma cópia do que a `&âncora` guardava, e as chaves de mesclagem `<<:` são aplicadas. O JSON não tem como exprimir compartilhamento, então não é uma escolha: é a única tradução fiel. O resultado é maior que o YAML, e esse é o custo honesto.
Meu arquivo tem vários documentos. O que recebo?
Um array JSON, uma entrada por documento. `---` separa documentos YAML e o JSON não tem equivalente; o array é a única forma que guarda todos. Um arquivo com um só documento devolve o objeto, não um array de um.

Conversores relacionados