Guía
Convertir YAML a JSON en código
Cuando la conversión pertenece a un script o a un paso de compilación y no a una pestaña del navegador, estos son los equivalentes.
Por yamltojsonfree · Publicado el · Actualizado el
Python, Node.js, Go y la línea de comandos
Cada fragmento lee input.yaml e imprime JSON formateado. Sin embargo no son intercambiables — la nota bajo cada uno te dice qué versión de YAML implementa esa biblioteca, y esa diferencia puede cambiar tus datos en silencio.
Python
import json, yaml
with open("input.yaml") as f:
data = yaml.safe_load(f) # safe_load, never load()
print(json.dumps(data, indent=2))PyYAML implementa YAML 1.1, así que aquí no se convierte en False — a diferencia de la herramienta del navegador, que usa 1.2 por defecto.
Node.js
import { readFileSync } from "node:fs";
import { load } from "js-yaml";
const data = load(readFileSync("input.yaml", "utf8"));
console.log(JSON.stringify(data, null, 2));js-yaml v5 usa YAML 1.2 por defecto — el mismo motor y los mismos valores predeterminados que la herramienta de este sitio.
Go
import (
"encoding/json"
"os"
"sigs.k8s.io/yaml"
)
in, _ := os.ReadFile("input.yaml")
out, _ := yaml.YAMLToJSON(in)
os.Stdout.Write(out)sigs.k8s.io/yaml convierte a través de etiquetas JSON, que es lo que usa el propio Kubernetes.
Bash (yq)
# Single document
yq -o=json input.yaml
# Multi-document into a JSON array
yq -o=json -I=2 'select(document_index >= 0)' -N input.yaml
# Minified
yq -o=json -I=0 input.yamlEste es mikefarah/yq. El otro yq (kislyuk) es un envoltorio de jq con opciones distintas.
Tres cosas que hacer bien en un script
Usa el cargador seguro. En Python, yaml.load() sin un cargador explícito puede construir objetos Python arbitrarios a partir de YAML etiquetado — lo que equivale a ejecución de código si la entrada no es tuya. safe_load() analiza solo datos simples, y casi nunca hay razón para usar otra cosa.
Conoce tu versión de YAML. PyYAML lee YAML 1.1, así que country: NO sale como False; js-yaml v5 y el analizador de Go con sabor a Kubernetes leen 1.2, así que la misma línea sigue siendo una cadena. Una canalización que convierte con una biblioteca y valida con otra puede contradecirse a sí misma. La lista completa de valores afectados está en la guía YAML 1.1 frente a 1.2.
Maneja los flujos multi-documento. La salida de Kubernetes y Helm suele ser varios documentos separados por ---. Un load normal lee solo el primero y descarta el resto en silencio — usa yaml.safe_load_all() en Python, loadAll() en js-yaml, o la invocación de yq mostrada arriba para obtener todos los documentos.
O sáltate el script por completo
Para una conversión puntual, el conversor gratuito de YAML a JSON hace todo lo anterior en el navegador: flujos multi-documento, anclas y claves de fusión, modos YAML 1.1 y 1.2, y errores fijados a la línea exacta. Nada se sube — el analizador se ejecuta por completo en tu equipo.
Referencias
- PyYAML: cargar YAML — por qué safe_load, nunca load
- README de js-yaml — load, loadAll y opciones de esquema
- sigs.k8s.io/yaml — YAML a JSON para Go con semántica de Kubernetes
- Documentación de yq (mikefarah) — las opciones -o=json, -I y -N usadas arriba
- Especificación YAML 1.2.2 — la versión a la que apuntan la mayoría de analizadores modernos
Todas las herramientas
YAML a JSON
Convertidor YAML a JSON online: formateado, minificado, privado y con errores en la línea exacta.
AbrirJSON a YAML
Convierte JSON a YAML legible con control de sangría, orden de claves y salida lista para copiar.
AbrirValidador YAML
Valida YAML online y revisa sintaxis, indentación, tabulaciones y claves duplicadas.
AbrirFormateador YAML
Formatea, embellece y reindenta YAML con sangría consistente y comentarios conservados.
Abrir