Ich bin ein bisschen Ruby Nooby und kann nicht zu begreifen scheinen, was scheint ein Hash in Array verschachtelt zu sein ?!Ruby Sinatra Hash geschachtelt in Array
wenn ich laufen die folgenden:
widgets = Sinatra::Application.settings.history
widgets.each do |key, value|
puts key
puts value
end
ich folgendes Ergebnis:
sales31
data: {"text":"Moeslein Nate","dataImg":"/vinD.jpg","id":"sales31","updatedAt":1511232577}
jedoch; wenn ich nur die Werte mit dem Schlüssel zu extrahieren versuchen, ich bin mit einem Fehler begegnet:
widgets = Sinatra::Application.settings.history
widgets.each do |key|
puts key[:data]
end
Met mit Fehlern TypeError - no implicit conversion of Symbol into Integer
, die mich zu glauben, dass es ein Array mit einer verschachtelten Hash war, so habe ich versucht:
widgets = Sinatra::Application.settings.history
widgets.each do |key|
puts key[0]
end
, die gerade die Schlüssel druckt wieder sales30
sales31
und wenn ich versuche, und verschachtelte Daten extrahieren:
widgets = Sinatra::Application.settings.history
widgets.each do |key|
puts key[0][:data]
end
Zurück zu Type Error
und nur die ersten Buchstaben des Schlüssels diesmal:
widgets = Sinatra::Application.settings.history
widgets.each do |key|
puts key[0][0]
end
jemand am besten erarbeiten kann/Ich kann die Daten so sinnvoll parsen, dass ich mit dem KEY bestimmte Werte extrahieren kann:
widgets[sales31][text]
, wo es den eigentlichen Text drucken würde:
Moeslein Nate
Vielen Dank für Ihre Zeit!
Ich denke, ich kann Ihnen helfen, aber können Sie genau sagen, was das Ergebnis sein sollte? Der 'Jeder'-Iterator arbeitet übrigens anders auf Hashes, wenn dem Block ein Argument gegeben wird (in diesem Fall wird er zu einem '' ] 'Array oder zwei Argumenten (in diesem Fall werden sie auf key und val gesetzt) respektive) –
Danke, ja, ich bin in der Lage, dynamisch auf die Elemente wie folgt zugreifen: Hash [Key] [Daten:] [Text:] und haben den Textteil zurückgegeben: "Moeslein Nate" Hash [Key ] [data:] [dataImg:] sollte "/vinD.jpg" zurückgeben Ich möchte die Werte unter Daten geschachtelt bekommen: aber mit Logik als so kann ich sie mit dem Schlüssel erhalten, um sicherzustellen, dass meine Schlüsselwerte übereinstimmen entsprechend! – Shwtm3
basierend auf Ihrer Ruby-Version, oder hinzufügen 'activesupport' als Abhängigkeit können Sie' transform_keys! 'verwenden.So können Sie alle Ihre Schlüssel auf den gleichen Typ (zB Symbol) – marmeladze