Ferramentas para programadores

Conversor JSON ↔ YAML

Converta JSON para YAML ou YAML para JSON localmente, com listas aninhadas, texto e números exatos.

Os seus valores

Conversão de dados YAML 1.2. Comentários e formatação não são preservados. Limite de entrada: 2 MiB.

Os seus resultados

Converter JSON e YAML com os tipos de dados pretendidos

Converta dados compatíveis com JSON entre JSON estrito e a sintaxe core de YAML 1.2. O conversor preserva as representações numéricas JSON, incluindo inteiros grandes, em vez de as arredondar primeiro através de números JavaScript. Converte valores de dados, não a formatação do documento de origem nem o esquema de configuração de uma aplicação. Comentários, âncoras e escolhas de apresentação YAML não se mantêm numa conversão para JSON.

Passo a passo

  1. Cole texto ou abra um ficheiro local UTF-8 JSON, YAML, YML ou TXT. Escolha explicitamente JSON → YAML ou YAML → JSON; abrir um ficheiro não deteta a direção.
  2. Escolha dois ou quatro espaços e, se necessário, ordene as chaves dos objetos. Processe a entrada e resolva erros de sintaxe ou de funcionalidades não suportadas. A ordenação é recursiva e lexicográfica, distinguindo maiúsculas de minúsculas; a ordem das listas não muda.
  3. Examine cadeias de texto, booleanos, valores nulos e números e depois copie, imprima ou transfira converted.yaml ou converted.json. Se editar a entrada ou as opções, processe novamente porque a saída anterior é apagada. Valide o ficheiro convertido com a aplicação que o irá usar.

Definições e limites

Tipos e regras de documentos
Use um documento YAML 1.2 com chaves de texto únicas e valores compatíveis com JSON. Ponha entre aspas identificadores que pareçam números, como "00123"; YAML 00123 sem aspas torna-se o número 123. Os textos simples yes, on e datas ISO permanecem cadeias de texto segundo as regras core.
Aliases e funcionalidades não suportadas
Aliases sem ciclos são expandidos em valores repetidos. Ciclos, chaves duplicadas, chaves que não sejam texto, etiquetas não suportadas e números não finitos são rejeitados. As chaves de combinação YAML não são aplicadas: <<: *base torna-se uma propriedade normal "<<", pelo que deve expandir primeiro os campos herdados pretendidos.
Tamanho e complexidade
A entrada está limitada a 2 MiB de texto UTF-8: 2,097,152 bytes. A saída está limitada a 8 MiB. O processamento também para acima de 128 níveis de aninhamento, 200,000 nós de valores ou 100 visitas a aliases; um ficheiro pequeno pode ultrapassar esses limites.

Exemplo resolvido

Transfira types-example.json e escolha JSON → YAML com indentação de dois espaços e sem ordenação. Converta-o e compare types-example.yaml. Os id e word entre aspas continuam a ser texto, enabled continua false, e retries e large continuam a ser números.

Transferir os ficheiros de exemplo

Entrada de exemplo

{"id":"00123","word":"yes","enabled":false,"retries":3,"large":9007199254740993}

Resultado esperado

"id": "00123"
"word": "yes"
"enabled": false
"retries": 3
"large": 9007199254740993

Abra agora types-example.yaml, mude explicitamente para YAML → JSON e processe novamente. O id deverá continuar a ser "00123" e o inteiro grande deverá continuar a ser 9007199254740993. Remova as aspas à volta de 00123 no YAML e repita: o valor torna-se o número 123. Essa diferença importa para identificadores, mesmo quando ambos os ficheiros são válidos.

Perguntas e resolução de problemas

Porque é que JSON com chaves duplicadas falha aqui mas pode ser formatado noutro local?

O formatador JSON pode avisar sobre chaves duplicadas e mantê-las. Este conversor rejeita-as porque convertê-las numa estrutura chave-valor poderia mudar o seu significado. Decida que valor pertence à origem e remova o duplicado antes de converter.

Os comentários e a herança YAML serão preservados?

JSON não tem comentários nem âncoras. Os aliases são expandidos e as chaves de combinação são exportadas literalmente em vez de aplicadas como herança. Expanda os dados pretendidos e reveja o resultado; a conversão não é uma reescrita fiel de todas as funcionalidades YAML.

Os números grandes são seguros na aplicação de destino?

O conversor preserva as representações numéricas suportadas e os valores de inteiros grandes, mas um programa posterior pode analisá-los com menor precisão. Use uma cadeia entre aspas quando um valor que pareça numérico for um identificador e teste o analisador da aplicação de destino.