Erstens, die richtige Einrückung (beachten Sie unbedingt, was ich unten verwendet habe) wird Ihnen helfen, die Struktur des Objekts zu verstehen.
h = { inventory: [
{
title: "ProductOne",
description: "This is a description for product one",
brand: "ProductBrandName",
stock: 30,
"full-price": "24.99",
purchases: [
{
channel: "online",
date: "2011-12-31T23:59:59+00:00",
price: 15.99,
shipping: 0.0,
currency: "USD",
user: { name: "John Brown", state: "KY" }
},
{
channel: "online",
date: "2012-12-31T23:59:59+00:00",
price: 18.99,
shipping: 7.50,
currency: "USD",
user: { name: "Jack Black", state: "NY" }
}
]
}
]
}
können wir die Preise wie folgt drucken:
h[:inventory].first[:purchases].each { |g| puts g[:price] }
15.99
18.99
die durch die Berechnungen gehen lassen.
a = h[:inventory]
#=> [
# { :title=>"ProductOne", :description=>"This is a description for product one",
# :brand=>"ProductBrandName", :stock=>30, :"full-price"=>"24.99",
# :purchases=>[{ :channel=>"online", :date=>"2011-12-31T23:59:59+00:00",
# :price=>15.99, :shipping=>0.0, :currency=>"USD",
# :user=>{:name=>"John Brown", :state=>"KY"}
# },
# { :channel=>"online", :date=>"2012-12-31T23:59:59+00:00",
# :price=>18.99, :shipping=>7.5, :currency=>"USD",
# :user=>{:name=>"Jack Black", :state=>"NY"}
# }
# ]
# }
# ]
Wie man sieht, ist ein Array a
ein Element enthält, einen Hash. Um diesen Hash zu erhalten, wählen wir das erste Element von a
.
b = a.first
#=> { :title=>"ProductOne", :description=>"This is a description for product one",
# :brand=>"ProductBrandName", :stock=>30, :"full-price"=>"24.99",
# :purchases=>[{ :channel=>"online", :date=>"2011-12-31T23:59:59+00:00",
# :price=>15.99, :shipping=>0.0, :currency=>"USD",
# :user=>{:name=>"John Brown", :state=>"KY"}
# },
# { :channel=>"online", :date=>"2012-12-31T23:59:59+00:00",
# :price=>18.99, :shipping=>7.5, :currency=>"USD",
# :user=>{:name=>"Jack Black", :state=>"NY"}
# }
# ]
# }
Als nächstes wollen wir den Wert des Schlüssels :purchases
in der Hash-b
.
c = b[:purchases]
#=> [
# { :channel=>"online", :date=>"2011-12-31T23:59:59+00:00",
# :price=>15.99, :shipping=>0.0, :currency=>"USD",
# :user=>{ :name=>"John Brown", :state=>"KY" }
# },
# { :channel=>"online", :date=>"2012-12-31T23:59:59+00:00",
# :price=>18.99, :shipping=>7.5, :currency=>"USD",
# :user=>{:name=>"Jack Black", :state=>"NY" }
# }
# ]
Da jedes der drei Elemente der c
ist ein Hash mit Schlüssel :price
, können wir die Werte, die Schlüssel durch Durchschleifen des Hashes drucken:
c.each { |g| puts g[:price] }
15.99
18.99
beachten:
{ "a": 1 }
#=> {:a=>1}
{ a: 1 }
#=> {:a=>1}
Dies zeigt Ihnen, dass die doppelten Anführungszeichen unnötig sind, aber das ist nur, wenn das Symbol ein einzelnes Wort enthält.Bedenken Sie:
{ full price: "24.99" }
#=>SyntaxError:...
{ full-price: "24.99" }
#=>SyntaxError:...
Hier müssen wir die Zitate:
{ "full price": "24.99" }
#=> {:"full price"=>"24.99"}
{ "full-price": "24.99" }
#=> {:"full-price"=>"24.99"}
Ich nahm an, es JSON war. Hoffe, das OP kommt zurück und tötet die Spannung. Wie auch immer, großartige umfassende Erklärung! – SoAwesomeMan