Skip to content

YAML – Introduction

YAML (a recursive acronym for “YAML Ain’t Markup Language”) is a human-readable data serialization standard. It’s designed to be intuitive for humans to read and write, and it works seamlessly with various programming languages. YAML is commonly used for configuration files, data exchange between languages, and object persistence. This chapter introduces you to YAML and its core features.

YAML represents data in three basic forms: mappings (key-value pairs), sequences (lists/arrays), and scalars (strings, numbers, booleans). Indentation (using spaces, not tabs) is crucial for defining structure.

Consider a simple key-value pair:

name: John Doe

This represents a mapping where the key ‘name’ is associated with the string value ‘John Doe’.

Let’s look at how different data types are represented in YAML:

A floating-point number:

# YAML representation of Pi
pi: 3.1415926536

When parsed by a YAML processor, the value associated with ‘pi’ would be interpreted as a float.

A sequence (list) of items:

groceries:
- eggs
- ham
- spam
- bread

This YAML represents a key ‘groceries’ whose value is a list of strings. A YAML parser would typically convert this into an array or list data structure in the target programming language, for example, in Python:

# Conceptual Python representation after parsing
# {'groceries': ['eggs', 'ham', 'spam', 'bread']}

YAML’s design offers several advantages:

  • Human Readability: Clean and minimal syntax makes YAML files easy to read and understand.
  • Data Structures: Naturally maps to common data structures found in most programming languages (e.g., lists, dictionaries/maps, scalars).
  • Portability: YAML data can be easily exchanged between different programming languages and systems.
  • Comments: Supports comments (starting with ’#’) for better documentation within the data file itself.
  • Anchors and Aliases: Allows for reusable data blocks using anchors (&) and aliases (*), promoting DRY (Don’t Repeat Yourself) principles.
  • Broad Language Support: Libraries for parsing and emitting YAML are available for many popular programming languages like Python, Ruby, Java, JavaScript, Go, and C#.
  • Unicode Support: YAML fully supports Unicode characters, allowing for internationalized content.

For further information, you can refer to the official YAML specification at yaml.org.