Syntax für leeres Wörterbuch in YAML

88

Wie bezeichne ich ein leeres Wörterbuch in YAML? Das heißt, es sollte semantisch äquivalent zum leeren json-Objekt sein {}.

Betamos
quelle

Antworten:

157

Kurze Antwort: verwenden {}

Es gibt zwei Möglichkeiten, Zuordnungen (Wörterbücher) in yaml zu bezeichnen. Flusszuordnungen und Blockzuordnungen :

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

Der Flow-Mapping-Stil eignet sich daher zur Darstellung leerer Mappings.

Betamos
quelle
21
leere Liste wäre []
gigi2
Warum ist es aber ungeeignet? Was ist los mit nur "empty_block_mapping:" (und nichts danach)
Jonathan Hartley
5
@JonathanHartley nur die rechte Seite empty_block_mapping:leer zu lassen, ist das Äquivalent von empty_block_mapping: null, nicht empty_block_mapping: {}.
Rampion
9

Allgemeine Technik zur Beantwortung dieser Art von Frage, um Betamos 'richtige Antwort zu ergänzen: Verwenden Sie 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

Ich benutze dies immer dann, wenn ich mir nicht sicher bin, wie ich etwas codieren soll.

Paul Cantrell
quelle