Sintaxe para dicionário vazio em YAML

97

Como denoto um dicionário vazio em YAML? Ou seja, deve ser semanticamente equivalente ao objeto json vazio {}.

Betamos
fonte

Respostas:

174

Resposta curta: use {}

Existem duas maneiras de denotar mapeamentos (dicionários) no yaml; mapeamentos de fluxo e mapeamentos de bloco :

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

O estilo de mapeamento de fluxo é, portanto, adequado para representar mapeamentos vazios.

Betamos
fonte
21
a lista vazia seria []
gigi2
Por que não é adequado? O que há de errado com apenas "empty_block_mapping:" (e nada depois disso)
Jonathan Hartley
6
@JonathanHartley apenas deixar o lado direito do empty_block_mapping:espaço em branco equivale a empty_block_mapping: nullnão empty_block_mapping: {}.
aumento de
8

Técnica geral para responder a este tipo de pergunta, para complementar a resposta correta de Betamos: use 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

Eu uso isso sempre que não tenho certeza de como codificar algo.

Paul Cantrell
fonte