Como converter JSON e YAML com segurança
Selecione a direção, cole um documento e converta. O lado YAML aceita apenas escalares, sequências e mapas representáveis em JSON, evitando etiquetas JavaScript e tipagem implícita inesperada.
- Escolha JSON para YAML para leitura humana, ou YAML para JSON para APIs e ferramentas.
- Cole um documento completo e válido no esquema restrito.
- Reveja o resultado; objetos e arrays são preservados e aliases sem ciclo são expandidos.
- Corrija alertas de inteiros grandes e erros de etiquetas, chaves bloqueadas, ciclos ou valores não suportados.
Exemplos e comportamento esperado
| Entrada | Saída | Observações |
|---|---|---|
{"name":"api","ports":[80,443]} |
name: api
ports:
- 80
- 443 |
Os objetos tornam-se mapas e os arrays tornam-se sequências. |
enabled: true
retries: 3 |
{
"enabled": true,
"retries": 3
} |
Booleanos e números compatíveis preservam o tipo. |
message: Olá 👋 |
{"message":"Olá 👋"} |
Unicode é preservado nos dois formatos. |
date: 2026-07-29 |
{"date":"2026-07-29"} |
Neste esquema, texto com aparência de data continua cadeia de texto. |
payload: !!js/function function(){} |
YAML rejeitado |
Etiquetas específicas de JavaScript não são permitidas. |
__proto__:
polluted: true |
Chave perigosa rejeitada |
Chaves de protótipo são bloqueadas antes do JSON. |
Modelo de dados e esquema escolhido
O conversor usa JSON_SCHEMA do js-yaml, não o esquema padrão mais amplo. São aceites mapas com chaves de texto, sequências, cadeias de texto, números finitos, booleanos e null. Isto evita construir automaticamente datas, binários, expressões regulares ou valores específicos de JavaScript.
YAML é mais abrangente do que JSON, pelo que um documento YAML válido pode ser rejeitado. Etiquetas personalizadas e tipos sem representação fiável em JSON ficam fora do âmbito. Se um produto depender deles, use o analisador oficial e reveja o modelo de segurança.
- Chaves de mapas precisam ser cadeias de texto JSON.
- Funções, símbolos, undefined e números não finitos não são aceites.
- Escalares com aparência de data permanecem texto.
Mapas, sequências, âncoras e aliases
Objetos JSON correspondem a mapas YAML e arrays a sequências. A ordem pode ser preservada para apresentação, mas a semântica não deve depender dela. Aliases podem criar referências partilhadas; o conversor percorre o resultado e deteta ciclos.
Um alias sem ciclo só pode aparecer em JSON pela duplicação dos dados. Autorreferências e ciclos não podem ser serializados e são rejeitados. Em JSON para YAML, a geração de referências é desativada para não criar âncoras inesperadas.
- Aliases são recurso de YAML, não de JSON.
- Grafos cíclicos são rejeitados antes de JSON.stringify.
- Ordem de chaves normalmente é apresentação.
Poluição de protótipo
__proto__, prototype e constructor podem ser perigosos quando dados não fiáveis são combinados com objetos JavaScript. A ferramenta bloqueia esses nomes em qualquer nível e reconstrói mapas sem protótipo.
É uma defesa adicional, não um substituto para o sistema recetor. O destino deve validar um esquema de lista permitida e evitar combinações recursivas de chaves arbitrárias em objetos privilegiados.
- Não combine configurações não fiáveis com valores predefinidos.
- Valide nomes e tipos no destino.
- Mantenha o analisador YAML atualizado.
Usos comuns
É usado para transformar exemplos de API em documentação YAML, preparar rascunhos de configuração, criar pedidos JSON e entender a relação entre recuo, sequências e mapas.
Em produção, reveja comentários perdidos, aspas, tipos e o esquema específico do produto. Implementações YAML diferentes podem interpretar escalares de outra forma, por isso teste no software final.
- Criar um pedido JSON a partir de YAML.
- Tornar um exemplo JSON mais legível.
- Verificar o tipo de cada escalar.
- Remover aliases antes de um sistema apenas JSON.
Erros e limites de compatibilidade
São informados JSON inválido, recuo ou aspas YAML incorretos, etiquetas não suportadas, chaves perigosas, valores incompatíveis e ciclos. Tabulações no recuo e dois-pontos ambíguos são causas comuns.
Comentários, nomes de âncoras, estilo de escalares, diretivas e espaço exato não são preservados. Vários documentos separados por --- também não são tratados. É um conversor de dados compatíveis com JSON, não um formatador YAML sem perda.
- Comentários se perdem ao passar por JSON.
- !!js/function é rejeitado.
- Valide a configuração com a aplicação antes do deploy.
Segurança, privacidade e recursos
A análise sintática ocorre no separador do navegador, sem envio nem persistência intencional. O esquema é restrito e uma verificação posterior bloqueia chaves perigosas, objetos não suportados e ciclos. Os tipos executáveis não são ativados.
Grafos de alias grandes e estruturas profundas podem consumir memória. Não processe ficheiros ilimitados de atacantes numa estação privilegiada. Remova segredos antes de partilhar a saída.
- Imponha limites de tamanho e profundidade nas aplicações de destino.
- Ser texto não torna YAML seguro.
- Evite chaves privadas em capturas e tickets.
Diferenças para formatação e CSV
O formatador JSON só muda espaços; este conversor muda a linguagem de serialização. CSV exige registos tabulares, cabeçalhos e uma estratégia para aninhados, enquanto YAML preserva a estrutura completa compatível com JSON.
Use validadores YAML do produto para etiquetas especiais, esquema para regras de campos e o formatador JSON se o problema for apenas sintático. A ferramenta mais restrita reduz alterações semânticas.