Comparativas Desarrollo

TOML vs YAML vs JSON

Tres formatos de configuración comparados: comentarios, legibilidad, tipos de datos, trampas y usos habituales, con la misma configuración escrita en los tres y comprobada para que produzca datos idénticos.

Última revisión:

AdSense Placeholder
Slot: header_reference_page
En esta página

Los mismos ajustes pueden escribirse en TOML, YAML o JSON. Los tres ejemplos de abajo contienen datos idénticos: analizados con tomllib de Python, PyYAML y json, dan resultados iguales. Convierta entre ellos con Conversor de TOML a JSON, Conversor de JSON a TOML, Conversor de JSON a YAML y Conversor de YAML a JSON.

La misma configuración de tres maneras

TOML

title = "Demo"
debug = false
ports = [8000, 8001]

[database]
host = "localhost"
max_connections = 50

YAML

title: Demo
debug: false
ports: [8000, 8001]
database:
  host: localhost
  max_connections: 50

JSON

{
  "title": "Demo",
  "debug": false,
  "ports": [8000, 8001],
  "database": {
    "host": "localhost",
    "max_connections": 50
  }
}

De un vistazo

TOML YAML JSON
Comentarios Sí (#) Sí (#) No
Estructura Tablas y claves; sin reglas de sangría Sangría Llaves y corchetes
Fechas y horas Tipos nativos Nativos (según la versión) Solo cadenas
Comas finales Permitidas en arrays No aplica No permitidas
Claves duplicadas Error Depende del analizador Depende del analizador
Valor nulo No existe null o ~ null
Ideal para Configuración editada a mano Configuración y manifiestos muy anidados Intercambio de datos y API

Trampas

  • Los analizadores de YAML 1.1 (PyYAML y muchas herramientas antiguas) leen NO como false, 01234 como el número 668 (octal) y 12:30 como 750 (base 60). Ponga comillas a todo lo que deba seguir siendo cadena.
  • JSON no tiene comentarios y muchos analizadores guardan los números como dobles, así que 9007199254740993 pasa a 9007199254740992 en JavaScript.
  • TOML resulta incómodo para datos muy anidados y para arrays largos de objetos mixtos; repetir encabezados de tabla con corchetes dobles se hace verboso.
  • Las claves duplicadas son un error en TOML y se sobrescriben en silencio en algunos analizadores de YAML y JSON.

Cuál elegir

  • Ajustes de aplicación escritos a mano: TOML.
  • Manifiestos de Kubernetes, canalizaciones de CI y otros ecosistemas construidos sobre él: YAML.
  • Datos de navegador, API y de máquina a máquina: JSON. Compruebe que un documento es válido con Validador JSON y Depurador en Línea.

Pruebe estas herramientas

Véase también

  • Hoja de referencia Guía rápida de la sintaxis TOML
    Todos los tipos de valor de TOML, tablas, arrays de tablas, claves con puntos, cadenas y fechas en una página.
  • Hoja de referencia Hoja de referencia de sintaxis YAML
    Referencia rápida de YAML: escalares, cadenas, listas, mapeos, texto multilínea, anclas.
  • Comparativa JSON frente a YAML frente a XML
    JSON para API e intercambio de datos, YAML para configuración editada a mano, XML para documentos y estándares con esquemas.
  • Glosario TOML
    TOML es un formato pequeño de archivos de configuración con tipos y secciones claros.
  • Glosario YAML
    YAML es un formato de datos legible para personas que usa sangrado en lugar de llaves, muy usado en archivos de configuración.
  • Guía Cómo funciona JSON
    Los seis tipos de valor JSON, por qué falla el análisis, trampas con enteros grandes y orden de claves, JSONPath y conversión a TypeScript.

Preguntas frecuentes

Para un archivo editado a mano, TOML es la opción más segura: es pequeño, estricto y admite comentarios. YAML conviene a archivos muy anidados ya ligados a herramientas YAML como Kubernetes. Use JSON para datos que intercambian programas.

Los analizadores de YAML 1.1 convierten en booleanos palabras sin comillas como NO, leen 01234 como octal y 12:30 como un número. Ponga comillas a las cadenas que deban seguir siendo texto.

AdSense Placeholder
Slot: footer_leaderboard