IA no seu dispositivo — profissional e privado.

Conversor YAML para JSON

YAML para JSON com manifestos, chaves de mesclagem e âncoras

  • Nada é enviado
  • Vários documentos
  • Chaves de mesclagem resolvidas
  • Erros com linha e coluna

Solte um arquivo .yaml ou .yml

Ou cole no editor abaixo. Até 25.0 MB no plano gratuito.

Exemplos:

Origem YAML

Saída JSON

Saída
Indentação
Indentação

Como o JSON é espaçado. Minificado é uma linha sem espaços.

Documentos
Documentos

O que fazer com um arquivo que contém vários documentos separados por ---.

Ordena as chaves por ponto de código para que duas conversões dos mesmos dados sejam comparadas limpamente.

Chaves duplicadas
Chaves duplicadas

O JSON não guarda os dois valores. Mudar isto relê o documento.

NaN e Infinity
NaN e Infinity

O JSON não tem literal para nenhum dos dois. Escolha o que acontece com .nan, .inf e -.inf.

Carimbos de data
Carimbos de data

As datas ficam exatamente como foram digitadas, a menos que peça ISO 8601.

Pro

Pro. Todos os documentos de todos os arquivos na fila, em um único array JSON.

O plano gratuito converte um arquivo de até 25.0 MB. Todas as opções de saída estão incluídas.

Como converter YAML em JSON

  1. 1

    Cole ou solte o seu YAML

    Cole no editor, arraste um arquivo .yaml ou .yml para a área de envio, ou abra um dos três exemplos. A conversão acontece enquanto você digita: não há botão a pressionar para ver o resultado.

  2. 2

    Escolha a forma de saída

    2 espaços, 4 espaços, tabulações ou minificado. Se o arquivo tiver vários documentos separados por ---, decida se viram um array JSON, só o primeiro, ou um arquivo cada. Ligue Ordenar chaves quando a saída for comparada.

  3. 3

    Confira o que a conversão mudou

    O painel abaixo do resultado nomeia tudo o que o JSON não consegue levar igual: valores como .nan e .inf, dados binários escritos em base64, e tags como !Ref resolvidas para o valor de baixo. Nada muda em silêncio.

  4. 4

    Converta, depois baixe ou copie

    Pressione Converter para gerar os arquivos e, em seguida, baixe o .json, copie-o para a área de transferência, ou leve um lote inteiro como um único ZIP. Se o YAML não puder ser lido, o erro indica a linha, a coluna e o texto ao redor.

O que este conversor de YAML para JSON oferece

Cole YAML, solte um arquivo .yaml ou .yml, ou carregue um exemplo, e o JSON aparece enquanto você digita. Manifestos com vários documentos, chaves de mesclagem, âncoras e tags incomuns são tratados em vez de recusados, e tudo o que a conversão precisou mudar é contado abaixo do resultado em vez de acontecer em silêncio. Escolha 2 espaços, 4 espaços, tabulações ou minificado, ordene as chaves quando o arquivo for comparado, e baixe o .json ou copie-o.

  • YAML 1.2 core — Mapeamentos, sequências, estilos de bloco e de fluxo, escalares com várias linhas, âncoras, aliases e chaves de mesclagem. As regras de escalares são as do esquema core 1.2, então yes e no continuam sendo texto.
  • Ciente de vários documentos — Um manifesto separado por --- vira um array JSON, o seu primeiro documento, ou um arquivo por documento. A versão anterior desta ferramenta recusava esses arquivos.
  • Quatro formas de saída — 2 espaços, 4 espaços, tabulações reais, ou minificado em uma linha. Ordenar chaves deixa cada objeto em ordem estável para que duas conversões dos mesmos dados sejam comparadas limpamente.
  • Erros com posição — A mensagem, a linha, a coluna e três linhas da sua própria origem com um cursor sob a falha — não um número extraído de uma frase.
  • Nada muda em silêncio — Números não finitos, dados binários e tags resolvidas são contados e nomeados abaixo do resultado, porque cada um é um valor que o JSON não leva igual.
  • Lote e ZIP — Enfileire até 50 arquivos no Pro, leve-os como um único arquivo compactado, ou dobre todos os documentos de todos os arquivos em um array JSON.

YAML com vários documentos e manifestos Kubernetes

Um arquivo YAML pode conter vários documentos, separados por três hifens na própria linha. É a forma normal de um manifesto Kubernetes — um Namespace, um Deployment e um Service em um arquivo — e também é como kubectl, kustomize e helm template escrevem a saída. O JSON não tem separador equivalente, então um conversor precisa decidir algo, e recusar o arquivo é a decisão que a maioria toma.

  • Automático — Um documento vira um objeto; vários viram um array de objetos. É o que as pessoas esperam, e é o padrão.
  • Sempre array — Sempre um array, mesmo com um único documento. Use quando o que ler o JSON itera sem verificar e um objeto solto quebraria.
  • Só o primeiro documento — Pega o documento inicial e descarta o resto. Útil quando algo foi concatenado a um arquivo do qual você só precisa do começo.
  • Arquivos separados — Um .json por documento, numerado com zeros à esquerda para que a listagem da pasta siga a ordem original. Nenhum dos concorrentes citados nesta página oferece isso.
  • Documentos vazios contam — Uma sequência de --- sem nada entre os marcadores é uma sequência de documentos null, e eles são preservados em vez de descartados, porque as suas posições têm significado em um patch.

Âncoras, aliases e chaves de mesclagem

O YAML permite nomear um nó com &ancora e referenciá-lo depois com *alias, e permite que um mapeamento absorva outro com a chave de mesclagem <<. Juntos, são como arquivos docker-compose, pipelines do GitLab CI e valores do Helm evitam repetição. O JSON não tem nada disso, então cada referência precisa ser expandida no lugar — e como um conversor trata a chave de mesclagem é a diferença entre um resultado correto e um plausível porém errado.

  • Aliases são expandidos — Cada nó referenciado é escrito onde é usado. Dois aliases para a mesma âncora produzem duas subárvores idênticas, porque o JSON não consegue expressar que eram o mesmo nó.
  • Chaves de mesclagem são resolvidas — Um serviço escrito como <<: *common sai com as chaves compartilhadas mescladas. Um analisador que segue YAML 1.2 à risca deixa em vez disso uma chave literal "<<" com um objeto aninhado: JSON válido, dados errados, e nenhum erro.
  • As chaves posteriores vencem — Chaves escritas diretamente no mapeamento sobrescrevem as que ele mesclou, comportamento do qual docker-compose e GitLab CI dependem.
  • A expansão é limitada — Âncoras podem ser aninhadas de modo que um arquivo minúsculo se expanda para gigabytes. A expansão possível é medida antes de qualquer análise, e um arquivo que possa exceder o orçamento é recusado em milissegundos em vez de congelar a página.

Como os tipos do YAML viram JSON

As regras de escalares são as do esquema core do YAML 1.2, e diferem do YAML 1.1 exatamente onde se decide se um valor chega como texto ou como número. Errar aqui não é diferença de formatação: muda os dados.

  • Booleanos são só true e false — yes, no, on, off, y e n continuam sendo texto. No YAML 1.1 virariam booleanos, e é por isso que o código de país NO da Noruega já quebrou tantos pipelines.
  • Números são decimais, octais e hexadecimais — 42, 0o14 e 0x1F são números. 1_000 é texto, porque separadores com sublinhado são do 1.1; 0b1010 também, pelo mesmo motivo.
  • Carimbos de data ficam como foram escritos — 2001-12-14 é a cadeia que você digitou, não uma data deslocada para o fuso da sua máquina. Mude o ajuste para ISO 8601 se quiser normalizá-los, e a contagem do que mudou aparece abaixo do resultado.
  • Escalares de bloco preservam as quebras — Um bloco | preserva cada quebra de linha; um bloco > as dobra em espaços. Ambos chegam como cadeias JSON comuns com o espaçamento que o YAML descreveu.
  • Tags resolvem para o valor de baixo — !Ref, !GetAtt, !Sub e qualquer outra tag incomum devolvem o escalar, a sequência ou o mapeamento ao qual estavam ligadas, e os nomes de tag são listados abaixo do resultado.

Valores que o JSON não consegue representar

Parte do YAML não tem equivalente algum em JSON. Todo conversor precisa fazer algo a respeito, e quase todos fazem sem avisar. Aqui a regra é que nada muda em silêncio: cada um destes casos é contado, nomeado, e onde há uma escolha real ela é sua.

  • .nan, .inf e -.inf — O JSON não tem literal para nenhum deles. Por padrão, é escrito null e a ferramenta conta quantos foram convertidos; também podem ser escritos como texto, ou a conversão pode parar para você decidir na origem.
  • Dados binários — Um nó !!binary vira uma cadeia base64 — o mesmo texto que estava no YAML, então nada se perde, mas agora é uma cadeia e não bytes.
  • Chaves compostas — Um mapeamento ou uma sequência usados como chave não têm equivalente em JSON, então são representados como texto. A chave é preservada em vez de virar algo como [object Object], que é o que uma conversão ingênua produz.
  • Aliases circulares — Uma âncora que se refere a si mesma é YAML legal e JSON impossível. Isso é reportado como alias circular com o caminho até o nó, em vez de falhar dentro de um serializador.
  • Comentários — Comentários YAML não são dados e nenhum documento JSON pode guardá-los. São descartados, como em qualquer conversor — vale saber se os comentários carregavam a documentação de uma configuração.

Chaves duplicadas e outras perdas silenciosas

As falhas contra as quais vale a pena se proteger não são as que geram erro. São as que produzem um documento organizado, plausível e errado. Uma chave duplicada é o exemplo mais claro: o YAML permite escrevê-la, o JSON não consegue guardar os dois valores, e por isso um deles desaparece na conversão.

  • Recusar, por padrão — A conversão para e nomeia a linha e a coluna da segunda chave. É o padrão seguro, porque a alternativa é um arquivo que parece convertido e está sem um valor.
  • Ou manter a última — Mude o ajuste e a conversão termina com «a última vence», que é o que a maioria das ferramentas YAML faz. A diferença é que você escolheu.
  • O inverso é uma tabulação — O YAML proíbe tabulações como indentação. Um arquivo perfeitamente alinhado em um editor com tabulação de dois espaços não será analisado, e o erro nomeia a linha.
  • Ordene as chaves antes de comparar — Duas exportações dos mesmos dados podem diferir apenas na ordem das chaves. Ordenar faz a comparação mostrar as mudanças e não a ordenação.

Um manifesto de 25 MB converte em pouco mais de um segundo na máquina de referência, e tudo isso acontece no seu dispositivo.

Opções de saída num relance

  • Indentação — 2 espaços, 4 espaços, tabulações reais, ou minificado em uma linha. As quatro são gratuitas — não existe eixo de qualidade em uma indentação.
  • Documentos — Automático, sempre array, só o primeiro documento, ou um arquivo por documento.
  • Ordenar chaves — Ordena as chaves de cada objeto por ponto de código, igual em todos os idiomas, para que a saída não dependa do idioma do navegador.
  • Chaves duplicadas — Recusar e informar, ou manter a última. Este ajuste vai para o analisador, então mudá-lo relê o documento.
  • Números não finitos — null, texto, ou parar a conversão.
  • Carimbos de data — Deixar exatamente como foram escritos, ou normalizar para ISO 8601.
  • Combinar (Pro) — Todos os documentos de todos os arquivos na fila, dobrados em um array JSON na ordem da fila.

Por que converter YAML em JSON?

YAML é escrito por pessoas e JSON é lido por programas. A conversão é o que permite que uma configuração confortável de editar chegue a um sistema que só aceita JSON, e é o jeito mais rápido de descobrir o que um arquivo realmente diz quando a indentação deixa de ser óbvia.

  • APIs aceitam JSON — Transforme uma configuração YAML em corpo de requisição, fixture, ou bloco de ajustes para um serviço sem analisador YAML.
  • Depurar a indentação — Quando um manifesto não se comporta, convertê-lo mostra a estrutura que o analisador viu, muitas vezes diferente da que a indentação sugeria.
  • Comparar duas configurações — Converta as duas, ordene as chaves e compare o JSON. Ordem e mudanças de comentário deixam de aparecer como diferenças.
  • Alimentar uma cadeia JSON — jq, validadores de JSON Schema e todas as ferramentas JSON deste site funcionam com o resultado.
  • No seu dispositivo, não nos nossos servidores — Manifestos contêm nomes de host, registros de imagens e ocasionalmente um segredo. A conversão acontece na página, então nada disso é enviado a lugar nenhum.

Perguntas frequentes

Como funciona o conversor de YAML para JSON?

Cole o seu YAML ou solte um arquivo .yaml ou .yml e o JSON aparece enquanto você digita. Escolha 2 espaços, 4 espaços, tabulações ou saída minificada, decida como os arquivos com vários documentos são agrupados, e pressione Converter para gerar o arquivo para download. Tudo roda no seu dispositivo: o documento nunca é enviado, e o conversor continua funcionando sem conexão depois que a página carrega.

Ele lida com manifestos Kubernetes de vários documentos?

Sim, e é por isso que a maioria chega aqui. Um arquivo cujos documentos são separados por --- na própria linha é lido como um fluxo. Você decide o que vem depois: Automático dá um objeto para um arquivo de um documento e um array JSON para um manifesto, Sempre array embrulha sempre, Só o primeiro pega apenas o documento inicial, e Arquivos separados escreve um .json por documento com nome numerado. Muitos conversores simplesmente recusam um arquivo assim com um erro de análise.

Âncoras, aliases e chaves de mesclagem são suportados?

Os três. Âncoras e aliases são expandidos no lugar, porque o JSON não tem sintaxe de referência: cada nó referenciado é escrito onde quer que seja usado. As chaves de mesclagem também são resolvidas, então um serviço docker-compose escrito como <<: *common sai com as chaves compartilhadas mescladas, e não com uma chave literal "<<" contendo um objeto aninhado. Esse resultado literal é uma resposta silenciosamente errada, e é o que um analisador YAML 1.2 estrito produz a menos que a mesclagem seja ativada explicitamente.

O que acontece com .nan, .inf e outros valores que o JSON não representa?

Você escolhe, e o conversor informa quantos encontrou. O JSON não tem como escrever NaN nem Infinity, então a maioria das ferramentas emite null sem dizer nada. Aqui o padrão continua sendo null, mas o painel abaixo do resultado os conta; você também pode escrevê-los como as cadeias "NaN", "Infinity" e "-Infinity", ou parar a conversão para resolver na origem.

Como os tipos do YAML viram JSON?

Mapeamentos viram objetos e sequências viram arrays. Os escalares seguem o esquema core do YAML 1.2: true e false são booleanos, ~ e null são null, inteiros e decimais simples são números, e todo o resto é texto. Ou seja, yes, no, on e off continuam sendo texto, e 1_000 continua sendo texto porque separadores com sublinhado pertencem ao YAML 1.1. Escalares de bloco com várias linhas preservam suas quebras exatamente.

O que o conversor faz com chaves duplicadas?

Por padrão ele recusa o arquivo e mostra a linha e a coluna da segunda chave, porque uma chave duplicada é perda de dados: o JSON não consegue guardar os dois valores, então um desaparece. Se preferir converter mesmo assim, mude o ajuste para Manter a última, que é o que a maioria das ferramentas YAML faz. De qualquer forma você é avisado de que a duplicata existe, e é justamente essa parte que os outros conversores omitem.

Funciona com CloudFormation, Helm ou outro YAML com tags?

Modelos do CloudFormation convertem. Tags como !Ref, !GetAtt e !Sub são resolvidas para o escalar, a sequência ou o mapeamento por baixo, e os nomes de tag usados são listados abaixo do resultado para que nada se perca discretamente. Conversores construídos com os padrões comuns lançam um erro de tag desconhecida nas três. Modelos do Helm com marcadores {{ }} só são YAML válido depois de renderizados, então execute helm template antes.

O que acontece se o meu YAML for inválido?

Você recebe a mensagem do analisador, a linha, a coluna e três linhas da sua própria origem com um cursor sob a posição exata — não um número de linha extraído de um texto de erro. As causas comuns são uma tabulação usada como indentação, uma sequência de fluxo não fechada, uma aspa faltando e um alias cuja âncora nunca foi definida; cada uma produz a sua própria mensagem. Também é oferecido um link para a ferramenta JSON para YAML, caso você tenha invertido a conversão.

Qual o tamanho máximo de arquivo?

O plano gratuito converte arquivos de até 25 MB, um por vez. Na máquina de referência um manifesto de 25 MB é analisado e serializado em pouco mais de um segundo, inteiramente fora da thread da interface, então a página continua respondendo enquanto trabalha. O Pro eleva o limite ao que o seu dispositivo aguentar, enfileira até 50 arquivos, baixa um lote como um único ZIP e pode dobrar todos os documentos de todos os arquivos em um único array JSON.

É seguro colar um YAML com milhares de âncoras?

Sim. Um YAML curto pode ser escrito de modo que suas âncoras se expandam para gigabytes: nove âncoras com nove aliases cada são 324 bytes que crescem para cerca de 387 milhões de nós. Este conversor mede a expansão possível antes de analisar qualquer coisa e recusa o arquivo em poucos milissegundos. Ferramentas que entregam o texto direto a um analisador travam a aba por vários segundos e depois quebram.

4.8de 5

de 76 avaliações

Avalie esta ferramenta

Toque numa estrela — leva um segundo