Синтаксис пустого словаря в YAML

91

Как обозначить пустой словарь в YAML? Т.е. он должен быть семантически эквивалентен пустому json-объекту {}.

Бетамос
источник

Ответы:

163

Краткий ответ: используйте {}

В yaml есть два способа обозначать отображения (словари); отображения расхода и блок отображения :

block_mapping:
    name:  foo
    id:    bar
flow_mapping: { name: foo, id: bar }
empty_flow_mapping: {}

Таким образом, стиль отображения потока подходит для представления пустых отображений.

Бетамос
источник
21
пустой список будет []
gigi2
Но почему это не подходит? Что не так с просто "empty_block_mapping:" (и ничего после этого)
Джонатан Хартли
6
@JonathanHartley, просто оставив правую часть empty_block_mapping:пробела, эквивалентно empty_block_mapping: null, not empty_block_mapping: {}.
rampion
8

Общая методика ответа на этот тип вопросов, дополняющая правильный ответ Betamos: используйте irb.

$ irb
2.2.0 :001 > require 'yaml'
 => true 
2.2.0 :002 > puts({}.to_yaml)   # original question
--- {}
 => nil 
2.2.0 :003 > puts({ mixed_types: [{}, "string", :symbol, {symbol: "value"}, nil, 3] }.to_yaml)
---
:mixed_types:
- {}
- string
- :symbol
- :symbol: value
- 
- 3
 => nil

Я использую это всякий раз, когда не знаю, как что-то кодировать.

Пол Кантрелл
источник