This is a quick reference cheat sheet for understanding and writing YAML format configuration files.
YAML is a data serialization language designed to be directly writable and readable by humans
.yaml or .yml extensionn1: 1 # integer n2: 1.234 # float s1: 'abc' # string s2: "abc" # string s3: abc # string b: false # boolean type d: 2015-04-05 # date type { "n1": 1, "n2": 1.234, "s1": "abc", "s2": "abc", "s3": "abc", "b": false, "d": "2015-04-05" } Use spaces to indent. There must be space between the element parts.
some_thing: &VAR_NAME foobar other_thing: *VAR_NAME { "some_thing": "foobar", "other_thing": "foobar" } # A single line comment example # block level comment example # comment line 1 # comment line 2 # comment line 3 parent: &defaults a: 2 b: 3 child: <<: *defaults b: 4 { "parent": { "a": 2, "b": 3 }, "child": { "a": 2, "b": 4 } } values: &ref - Will be - reused below other_values: i_am_ref: *ref { "values": [ "Will be", "reused below" ], "other_values": { "i_am_ref": [ "Will be", "reused below" ] } } --- document: this is doc 1 --- document: this is doc 2 YAML uses --- to separate directives from document content.
- Mark McGwire - Sammy Sosa - Ken Griffey [ "Mark McGwire", "Sammy Sosa", "Ken Griffey" ] hr: 65 # Home runs avg: 0.278 # Batting average rbi: 147 # Runs Batted In { "hr": 65, "avg": 0.278, "rbi": 147 } attributes: - a1 - a2 methods: [getter, setter] { "attributes": ["a1", "a2"], "methods": ["getter", "setter"] } children: - name: Jimmy Smith age: 15 - name: Jimmy Smith age: 15 - name: Sammy Sosa age: 12 { "children": [ {"name": "Jimmy Smith", "age": 15}, {"name": "Jimmy Smith", "age": 15}, {"name": "Sammy Sosa", "age": 12} ] } my_sequences: - [1, 2, 3] - [4, 5, 6] - - 7 - 8 - 9 - 0 { "my_sequences": [ [1, 2, 3], [4, 5, 6], [7, 8, 9, 0] ] } Mark McGwire: { hr: 65, avg: 0.278 } Sammy Sosa: { hr: 63, avg: 0.288 } { "Mark McGwire": { "hr": 65, "avg": 0.278 }, "Sammy Sosa": { "hr": 63, "avg": 0.288 } } Jack: id: 1 name: Franc salary: 25000 hobby: - a - b location: { country: 'A', city: 'A-A' } { "Jack": { "id": 1, "name": "Franc", "salary": 25000, "hobby": ["a", "b"], "location": { "country": "A", "city": "A-A" } } } Based on the YAML.org refcard.
% | Directive indicator |
--- | Document header |
... | Document terminator |
? | Key indicator |
: | Value indicator |
- | Nested series entry indicator |
, | Separate in-line branch entries |
[] | Surround in-line series branch |
{} | Surround in-line keyed branch |
& | Anchor property |
* | Alias indicator |
= | Default "value" mapping key |
<< | Merge keys from another mapping |
'' | Surround in-line unescaped scalar |
" | Surround in-line escaped scalar |
| | Block scalar indicator |
> | Folded scalar indicator |
- | Strip chomp modifier ( | -or>-) |
+ | Keep chomp modifier ( | +or>+) |
1-9 | Explicit indentation modifier ( | 1or>2). Modifiers can be combined ( | 2-, >+1) |
none | Unspecified tag (automatically resolved by application) |
! | Non-specific tag (by default, !!map/!!seq/!!str) |
!foo | Primary (by convention, means a local !foo tag) |
!!foo | Secondary (by convention, means tag:yaml.org,2002:foo) |
!h!foo | Requires %TAG !h! <prefix> (and then means <prefix>foo) |
!<foo> | Verbatim tag (always means foo) |
# | Throwaway comment indicator |
`@ | Both reserved for future use |
!!map | {Hash table, dictionary, mapping} |
!!seq | {List, array, tuple, vector, sequence} |
!!str | Unicode string |
!!set | {cherries, plums, apples} |
!!omap | [one: 1, two: 2] |
{~, null} | Null (no value). |
[1234, 0x4D2, 02333] | [Decimal int, Hexadecimal int, Octal int] |
[1_230.15, 12.3015e+02] | [Fixed float, Exponential float] |
[.inf, -.Inf, .NAN] | [Infinity (float), Negative, Not a number] |
{Y, true, Yes, ON} | Boolean true |
{n, FALSE, No, off} | Boolean false |