# Conversor JSON ↔ YAML

> Converta JSON para YAML em estilo de bloco ou YAML de volta para JSON, inteiramente no seu navegador. Erros de análise apontam a linha e a coluna exatas, e notas de conversão sinalizam as bordas com perda, como comentários descartados e âncoras expandidas.

- Tool: https://ronutz.com/pt-BR/tools/json-yaml-convert
- Family: Codificação e dados

---

## O que faz

Converta um documento entre JSON e YAML em qualquer direção, no seu navegador. Partindo do JSON, ela produz YAML em estilo de bloco; partindo do YAML, produz JSON. Quando uma análise falha, o erro indica a linha e a coluna exatas, e quando uma conversão perde algo pelo caminho, uma nota explica o quê e por quê.

## As duas direções

- **JSON para YAML.** O JSON é primeiro validado pelo mesmo analisador preciso, que rastreia a posição, usado pelo formatador JSON, de modo que um documento inválido é rejeitado com linha, coluna e caminho JSON Pointer, em vez de uma falha vaga. Os dados válidos são então escritos como YAML em estilo de bloco.
- **YAML para JSON.** O YAML é analisado sob um esquema compatível com JSON e serializado para JSON. Âncoras e aliases (o mecanismo de reúso `&nome` e `*nome` do YAML) são expandidos inline, e escalares de bloco (os estilos de string de múltiplas linhas do YAML) viram strings JSON comuns.

## As armadilhas de aspas que ela trata

O YAML é famoso por ler uma palavra solta como algo diferente de uma string, e é aí que as idas e voltas dão errado. O caso mais conhecido é o "problema da Noruega": a palavra solta `NO` é lida como o booleano falso, e o mesmo acontece com `yes`, `on` e `off`, e com valores como `1.0` (um número, não a string "1.0") e `08` (que não é um octal válido). Ao emitir YAML, o conversor coloca esses valores entre aspas para que aquilo que você quis dizer como string sobreviva como string.

## O que a conversão pode perder

Algumas coisas existem em um formato mas não no outro, então as notas as sinalizam:

- **Comentários.** O YAML tem comentários e o JSON não, então os comentários são descartados ao converter de YAML para JSON.
- **Âncoras e aliases.** São expandidos para o seu valor completo, então uma referência compartilhada e compacta no YAML de origem vira dado repetido na saída.

## Exemplos

- O JSON `{"port":8080,"tls":true}` vira as linhas YAML `port: 8080` e `tls: true`.
- O YAML `country: NO` vira o JSON `{"country":"NO"}` na entrada, e quando isso é emitido de volta para YAML o valor é colocado entre aspas como `country: "NO"` para que não seja confundido com falso.

## Como usar

Cole JSON para obter YAML, ou YAML para obter JSON. Leia as notas de conversão quando aparecerem: elas dizem se algo, como um comentário ou uma âncora, mudou de um jeito que você deva saber. A conversão é determinística para uma dada entrada.

## Standards and references

- [YAML Ain't Markup Language (YAML) 1.2.2 Specification](https://yaml.org/spec/1.2.2/) - the YAML data model, its relationship to JSON, and core/JSON schemas
- [RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format](https://www.rfc-editor.org/rfc/rfc8259) - the JSON side of the conversion
- [js-yaml - YAML parser and serializer for JavaScript](https://github.com/nodeca/js-yaml) - the YAML parser and emitter, used under the JSON-compatible schema

## Related reading

- [Âncoras, aliases e merge keys em YAML](https://ronutz.com/pt-BR/learn/yaml-anchors-and-aliases.md): O YAML pode definir um valor uma vez e reutilizá-lo com uma âncora e um alias, e mesclar um mapping em outro com uma merge key. Nada disso existe em JSON, então a conversão expande e duplica tudo. Este artigo cobre a sintaxe, o que acontece na conversão, e a armadilha de negação de serviço que eles habilitam.
- [Block scalars e strings multilinha em YAML](https://ronutz.com/pt-BR/learn/yaml-block-scalars.md): O YAML tem duas formas de escrever uma string multilinha, e elas tratam quebras de linha de modo diferente: o estilo literal as mantém, o estilo folded as transforma em espaços. Indicadores de chomping então decidem o que acontece com a quebra de linha final. Errar isso é por que um script ou certificado embutido sai sutilmente corrompido.
- [Coerção de Tipos no YAML e o Problema da Noruega](https://ronutz.com/pt-BR/learn/yaml-type-coercion.md): O YAML adivinha o tipo de todo escalar sem aspas, e seus palpites são surpreendentes: o código de país NO vira false, uma versão como 1.0 vira número, e um código com zeros à esquerda perde os zeros. Conhecer a regra é a chave para uma conversão segura.
- [JSON e YAML na Prática: APIs, Declarações e Orquestração](https://ronutz.com/pt-BR/learn/config-formats-in-practice.md): A divisão não é aleatória: APIs e declarações máquina-a-máquina tendem a ser JSON, enquanto arquivos de orquestração e pipeline escritos por humanos tendem a ser YAML. Entender por que cada domínio escolheu o que escolheu explica quando converter entre eles é útil.
- [JSON vs YAML: O Que Converte Limpo e o Que Não Converte](https://ronutz.com/pt-BR/learn/json-vs-yaml.md): O YAML foi projetado para que todo documento JSON também seja YAML válido, e é por isso que a conversão entre eles geralmente simplesmente funciona. A parte interessante são as bordas: comentários, âncoras, múltiplos documentos e tipos exclusivos do YAML que não têm equivalente em JSON.
