2016-11-15 1 views
0

Ich versuche, ein YAML zu nehmen, das so aussieht und ein neues YAML mit der TLD die oberste Ebene:Beim Versuch, eine YAML-Datei aus einem Hash zu erstellen, endet mein Schlüssel mit Zitaten darin

--- 
- 
TLD: .abogado 
Registry: 
TLD Type: nTLD 
- 
TLD: .ac 
Registry: 
TLD Type: ccTLD 

Ich Schleife durch, wobei die TLD als Hash-Schlüssel und der Rest als Wert für diesen Schlüssel.

cleaned_chart = {} 
rc.each do |item| 
    tld_key = item['TLD'] 
    cleaned_chart[tld_key] = item 
end 

Dann Dump ich den Hash in eine Datei:

File.open("db/data/open_srs/tld_reference_chart.yml","w") do |file| 
    file.write cleaned_chart.to_yaml 
end 

Aber ich bin verwirrt, warum jetzt der Schlüssel gibt es Zitate rund um ?!

".abogado": 
    tld: ".abogado" 
    tld_type: nTLD 
".ac": 
    tld: ".ac" 
    tld_type: ccTLD 

Ich kann nicht scheinen, die Zitate zu entfernen! Wenn es sich um eine Zeichenfolge handelt, wird sie automatisch eingefügt, genauso wie wenn ich in ein Symbol umwandle :(

Weiß jemand, warum das der Fall ist? Ich habe gegoogelt, kann aber nicht finden etwas darüber.

Antwort

2

viele YAML Serializer auf der Seite der Vorsicht irren, vor allem, wenn nichts Tasten mit unregelmäßigen Zeichen in ihnen. Punkt, Strich, Leerzeichen, das sind Dinge, die eine spezielle Behandlung benötigen.

Es gibt Rendering falsch mit dieser Ausgabe, in der Tat ist es wahrscheinlich die beste Version davon, die am zuverlässigsten entkommen, so dass andere YAML-Leser es richtig verarbeiten werden.

Ich würde vermeiden, diese Zitate zu entfernen. Wenn überhaupt, könnten Sie möglicherweise wechseln, wie Ihre Schlüssel gespeichert werden, um den Punkt zu vermeiden.

+0

Ahhh, das ist wirklich interessant, danke für die Erklärung! – MiaZ

Verwandte Themen