Converta YAML em JSON, com âncoras e aliases resolvidos. Um arquivo com vários documentos vira um array JSON.
O que é o YAML to JSON?
O YAML to JSON é uma ferramenta online gratuita que converte YAML em JSON no seu navegador. Ele lê YAML pelas regras do YAML 1.2 Core, transforma âncoras e aliases em valores simples e escreve um arquivo com vários documentos como uma lista JSON.
Ou ele converte todos os valores, ou recusa e explica por quê, por exemplo para um número que o JSON não consegue escrever.
O que ela aceita
- YAML lido pelas regras do YAML 1.2 Core, como um documento ou vários separados por ---: texto simples, entre aspas e de várias linhas, números, true, false, null, listas, mapeamentos, comentários, âncoras e aliases.
- As chaves precisam ser texto. Elas são escritas na ordem em que aparecem, e os valores que são números, true, false e null mantêm os seus tipos JSON.
- Os números mantêm os dígitos quando já são válidos em JSON: 12345678901234567890, 1e3 e 1.50 saem como estão. Números hexadecimais e octais e números com sinal de mais ou zeros à esquerda (0x1F, 0o17, +12, 007) são escritos como números decimais simples, e .5 vira 0.5.
- Âncoras e aliases são resolvidos: cada alias vira uma cópia completa do valor da sua âncora, e uma âncora vale para os aliases que vêm depois dela no seu próprio documento.
- Vários documentos viram uma lista JSON com um item por documento, e um documento vazio entre duas linhas --- vira null. Um único documento é escrito como ele mesmo.
- Blocos de texto (| e >), escapes entre aspas como \t e texto simples de várias linhas viram texto JSON comum, com as quebras de linha que o YAML define.
- A chave de mesclagem << é lida como uma chave comum, com um aviso, porque o YAML 1.2 Core não tem chaves de mesclagem. yes, no, on e off são texto simples.
Bom saber
- Recusados em vez de alterados: infinito e NaN (.inf, -.inf, .nan), um alias que aponta para um valor que o contém (um ciclo), uma chave que não é texto (um número, true, false, null, ou uma lista ou mapeamento usados como chave), uma tag personalizada ou fora do Core e uma diretiva como %YAML.
- O JSON não guarda comentários, âncoras nem marcadores de documento, e cada alias vira uma cópia, então o JSON pode ficar bem maior que o YAML. Um documento que passa do limite de tamanho é recusado em vez de cortado.
- Programas que seguem as regras mais antigas do YAML 1.1 leem alguns valores de forma diferente, por exemplo yes e no como booleanos ou 010 como um número octal. Esta ferramenta segue o YAML 1.2, então confira esses valores se o seu programa usa YAML 1.1.
- Uma chave repetida no mesmo mapeamento, um alias sem âncora e um erro de sintaxe são recusados com a linha e a coluna do problema.
- Um documento só com comentários não tem nada para converter, então você recebe um aviso pedindo conteúdo.
Como usar o YAML to JSON?
- Cole ou digite o seu YAML na caixa de entrada. Nada é executado enquanto você digita.
- Escolha a indentação (“2 espaços” ou “4 espaços”) e aperte “Converter”.
- Leia o JSON ao lado da entrada. Se a conversão for recusada, a mensagem explica o motivo e informa a linha e a coluna.
- Aperte “Copiar” para colocar o JSON na área de transferência, ou “Baixar” para salvá-lo como converted.json.
Exemplos
Um mapeamento e uma lista
Cole este YAML e aperte “Converter”. As chaves viram nomes JSON, 8080 e false continuam sendo um número e um booleano, as linhas que começam com hífen viram uma lista, e o comentário fica de fora porque o JSON não tem comentários.
name: demo
port: 8080
debug: false
# not kept in JSON
tags:
- api
- web
{
"name": "demo",
"port": 8080,
"debug": false,
"tags": [
"api",
"web"
]
}Um valor que o JSON não comporta
.inf é o infinito, um número no YAML, mas o JSON não tem como escrevê-lo, então a conversão é recusada em vez de alterar o valor. O mesmo vale para -.inf e .nan. A mensagem informa a linha e a coluna do valor.
limit: .inf
Este valor (.inf, -.inf ou .nan) é um número que o JSON não consegue representar. O JSON não tem infinito nem NaN, então a conversão foi recusada em vez de alterar seus dados. Troque por um número finito ou por um texto entre aspas.
Linha 1, coluna 8
Âncoras e aliases
O alias *d é substituído por uma cópia do valor que a âncora &d marca, então prod recebe o mesmo retries de defaults. O JSON não tem aliases, então cada uso vira uma cópia própria.
defaults: &d
retries: 3
prod: *d
{
"defaults": {
"retries": 3
},
"prod": {
"retries": 3
}
}Vários documentos
Uma linha com --- começa um novo documento. Dois documentos viram uma lista JSON com um item para cada um, enquanto um arquivo com um único documento é escrito como esse documento, e não como uma lista de um item.
---
name: web
---
name: api
[
{
"name": "web"
},
{
"name": "api"
}
]Palavras e números que parecem outra coisa
A ferramenta lê o YAML 1.2 Core, em que yes é texto simples e continua “yes”. 0x1F é um número hexadecimal, escrito como 31, e 007 é o número 7. Um inteiro longo, como 12345678901234567890, mantém todos os dígitos.
enabled: yes
port: 0x1F
zip: 007
id: 12345678901234567890
{
"enabled": "yes",
"port": 31,
"zip": 7,
"id": 12345678901234567890
}Limites e privacidade
Limites de tamanho
- Entrada: até 2.000.000 bytes de texto em UTF-8 (cerca de 2 MB). Letras acentuadas e emojis ocupam mais de um byte cada. Uma entrada maior é recusada.
- Resultado: também até 2.000.000 bytes. Se o resultado completo fosse maior, a ferramenta mostra apenas uma prévia incompleta dos primeiros 100.000 bytes, e essa prévia não pode ser copiada nem baixada.
- Aninhamento: até 256 níveis de mapeamentos e listas dentro uns dos outros. Um YAML mais profundo é recusado porque passa do que a ferramenta processa.
- Tempo: uma execução que demora mais que o seu limite de tempo é interrompida. Tente uma entrada menor.
Meu texto é enviado para um servidor?
Não. O texto que você digita ou cola, ou abre de um arquivo local, é processado localmente no seu navegador, em um Web Worker dedicado. Ele nunca é enviado para o servidor (um arquivo que você abre é lido apenas no seu navegador) e não é gravado em armazenamento, cookies nem na barra de endereços.
“Copiar” coloca o resultado na área de transferência e “Baixar” o salva como arquivo, mas só quando você aperta o botão. O arquivo é criado no seu navegador, então nada é enviado.
Para ver os detalhes completos, consulte a Política de Privacidade
Ferramentas e páginas relacionadas
O seu texto continua na página quando você troca de ferramenta na mesma aba, então dá para testar o mesmo texto em outra. Recarregar ou fechar a aba o encerra.