最初に、適切なインデント(必然的に私が以下で使用したことに注意してください)は、オブジェクトの構造を理解するのに役立ちます。
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" }
}
]
}
]
}
次のように我々は価格を印刷することができます。
h[:inventory].first[:purchases].each { |g| puts g[:price] }
15.99
18.99
はのは、計算見ていきましょう。
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"}
# }
# ]
# }
# ]
ご覧のとおり、a
は、1つの要素、ハッシュを含む配列です。そのハッシュを得るために、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"}
# }
# ]
# }
次は、私たちは、ハッシュb
におけるキー:purchases
の値を求めています。
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" }
# }
# ]
c
の三つの要素のそれぞれは、キー:price
付きハッシュであるので、我々はハッシュをループすることによって、そのキーの値を出力することができるが:
c.each { |g| puts g[:price] }
15.99
18.99
なお:
{ "a": 1 }
#=> {:a=>1}
{ a: 1 }
#=> {:a=>1}
これは二重引用符が不要であることを示していますが、記号が単一の単語で構成される場合にのみ表示されます。この考えてみましょう:
{ full price: "24.99" }
#=>SyntaxError:...
{ full-price: "24.99" }
#=>SyntaxError:...
をここに引用符が必要です
{ "full price": "24.99" }
#=> {:"full price"=>"24.99"}
{ "full-price": "24.99" }
#=> {:"full-price"=>"24.99"}
私はそれがJSONだったと仮定。 OPが戻ってサスペンスを殺すことを願っています。いずれにせよ、偉大な包括的な説明! – SoAwesomeMan