JSON vs YAML: The Superset Relationship
JSON is a strict subset of YAML 1.2. This means every valid JSON document is automatically valid YAML, but not every YAML document is valid JSON.
What YAML Adds Over JSON
- Comments: YAML supports
#comment lines. JSON forbids comments entirely. - Multiline strings: YAML block scalars (
|literal,>folded) for readable long strings. - Anchors & aliases: YAML can reference repeated nodes with
&anchorand*alias. - Cleaner syntax: YAML eliminates braces, brackets, and most quotes for better human readability.
When to Use JSON vs YAML
- Use JSON: REST APIs, web app config, data exchange, package manifests (npm, Composer).
- Use YAML: Kubernetes manifests, Docker Compose, GitHub Actions, Ansible playbooks, CI/CD pipelines.
# Same data in JSON and YAML
# JSON:
{
"name": "api-service",
"version": "2.0",
"enabled": true,
"ports": [8080, 8443]
}
# YAML (more readable, supports comments):
# Main service configuration
name: api-service
version: "2.0"
enabled: true
ports:
- 8080
- 8443