Ferramentas / Conversor YAML para JSON (e JSON para YAML)

Conversor YAML para JSON (e JSON para YAML)

Converta arquivos de configuração entre YAML e JSON. Suporta um subconjunto simples do YAML, direto no navegador.

Suporta um subconjunto simples de YAML: mapas, listas, textos, números, true/false/null, comentários e listas/mapas em linha. Não suporta âncoras, tags, blocos |/> nem vários documentos.

Processamento local: nada do que você digita sai do seu navegador.

Como usar

Escolha a direção, cole o conteúdo e o resultado aparece enquanto você digita. Use Usar exemplo para ver um modelo de configuração.

O que é suportado

  • Mapas e listas com indentação por espaços (nunca tabs), inclusive aninhados.
  • Textos simples ou entre aspas, números, true/false e null.
  • Listas e mapas em linha, como [1, 2] e {a: 1}.
  • Comentários começando com #.

Limitações

Esta ferramenta implementa só um subconjunto do YAML. Não há suporte a âncoras e aliases (&, *), tags (!!), blocos de texto | e >, chaves complexas nem vários documentos. Para arquivos avançados use uma biblioteca completa, como mostram os exemplos abaixo.

Como implementar em código

Exemplos prontos para usar no seu projeto.

// npm install js-yaml
import yaml from 'js-yaml';

const obj = yaml.load('nome: VcInova\nportas: [80, 443]');
const json = JSON.stringify(obj, null, 2);   // YAML -> JSON
const volta = yaml.dump(JSON.parse(json));   // JSON -> YAML

Use yaml.load apenas com YAML de fonte confiável e mantenha a biblioteca atualizada.

# pip install pyyaml
import json
import yaml

obj = yaml.safe_load("nome: VcInova\nportas: [80, 443]")  # use sempre safe_load
print(json.dumps(obj, indent=2, ensure_ascii=False))        # YAML -> JSON
print(yaml.safe_dump(obj, allow_unicode=True))              # JSON/dict -> YAML
package main

// go get gopkg.in/yaml.v3
import (
	"encoding/json"

	"gopkg.in/yaml.v3"
)

func yamlParaJson(entrada []byte) ([]byte, error) {
	var obj any
	if err := yaml.Unmarshal(entrada, &obj); err != nil {
		return nil, err
	}
	return json.MarshalIndent(obj, "", "  ")
}

Com yaml.v3 os mapas vêm como map[string]any, compatíveis com encoding/json.

// dart pub add yaml
import 'dart:convert';
import 'package:yaml/yaml.dart';

String yamlParaJson(String entrada) {
  final doc = loadYaml(entrada); // YamlMap / YamlList
  return const JsonEncoder.withIndent('  ').convert(doc);
}

Para gerar YAML a partir de JSON, use o pacote yaml_writer.

// Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;

public class Conversor {
    static String yamlParaJson(String yaml) throws Exception {
        Object obj = new YAMLMapper().readValue(yaml, Object.class);
        return new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(obj);
    }
}
<?php
// composer require symfony/yaml
use Symfony\Component\Yaml\Yaml;

$dados = Yaml::parse("nome: VcInova\nportas: [80, 443]");
echo json_encode($dados, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); // YAML -> JSON
echo Yaml::dump($dados, 4, 2);                                         // array -> YAML
// dotnet add package YamlDotNet
using System.Text.Json;
using YamlDotNet.Serialization;

static string YamlParaJson(string yaml)
{
    var obj = new DeserializerBuilder().Build().Deserialize<object>(yaml);
    return JsonSerializer.Serialize(obj, new JsonSerializerOptions { WriteIndented = true });
}

Perguntas frequentes

Por que meu YAML deu erro?

Os motivos mais comuns são tabs na indentação, chaves repetidas e recursos fora do subconjunto, como âncoras e blocos com | ou >. A mensagem informa a linha.

Os valores como "yes" e "no" viram booleanos?

Não. Seguindo o YAML 1.2, apenas true e false são booleanos. yes, no, on e off são tratados como texto.

Meus dados são enviados para algum servidor?

Não. A conversão roda inteira no seu navegador.

Veja também

Precisa de um sistema ou app sob medida?

A VcInova desenvolve software, aplicativos e integrações para empresas de todo o Brasil.

Fale com a VcInova