Syntaxe pour dictionnaire vide en YAML

90

Comment désigner un dictionnaire vide en YAML? C'est-à-dire qu'il devrait être sémantiquement équivalent à l'objet json vide {}.

Betamos
la source

Réponses:

163

Réponse courte: utiliser {}

Il existe deux façons de désigner les mappages (dictionnaires) dans yaml; mappages de flux et mappages de blocs :

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

Le style de mappage de flux convient donc pour représenter des mappages vides.

Betamos
la source
21
la liste vide serait []
gigi2
Pourquoi est-ce inapproprié? Quel est le problème avec juste "empty_block_mapping:" (et rien à la suite)
Jonathan Hartley
6
@JonathanHartley laisser juste le côté droit du empty_block_mapping:blanc équivaut à empty_block_mapping: nullnon empty_block_mapping: {}.
rampion
8

Technique générale pour répondre à ce type de question, pour compléter la bonne réponse de Betamos: utilisez 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

J'utilise ceci chaque fois que je ne sais pas comment encoder quelque chose.

Paul Cantrell
la source