Sintaxis para diccionario vacío en YAML

90

¿Cómo denoto un diccionario vacío en YAML? Es decir, debería ser semánticamente equivalente al objeto json vacío {}.

Betamos
fuente

Respuestas:

163

Respuesta corta: use {}

Hay dos formas de denotar asignaciones (diccionarios) en yaml; asignaciones de flujo y asignaciones de bloques :

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

Por tanto, el estilo de mapeo de flujo es adecuado para representar mapeos vacíos.

Betamos
fuente
21
la lista vacía sería []
gigi2
Sin embargo, ¿por qué no es adecuado? ¿Qué hay de malo con sólo "empty_block_mapping:" (y nada después de eso)
Jonathan Hartley
6
@JonathanHartley simplemente dejar el lado derecho del empty_block_mapping:espacio en blanco es el equivalente de empty_block_mapping: null, no empty_block_mapping: {}.
rampion
8

Técnica general para responder a este tipo de preguntas, para complementar la respuesta correcta 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

Lo uso cuando no estoy seguro de cómo codificar algo.

Paul Cantrell
fuente