以下是破解文档中的示例:
json = '{"posts":[{"title":"Foobar"},{"title":"Another"}]}' Crack::JSON.parse(json) => {"posts"=>[{"title"=>"Foobar"},{"title"=>"Another"}]}
但是,我如何实际访问哈希中的数据?
我尝试过以下方法:
array = Crack::JSON.parse(json) array["posts"]
array [“posts”]显示所有值,但我尝试了数组[“posts”] [“title”]并且它不起作用.
以下是我要解析的例子:
{"companies"=>[{"city"=>"San Mateo","name"=>"Jigsaw","address"=>"777 Mariners Island Blvd Ste 400","zip"=>"94404-5059","country"=>"USA","companyId"=>4427170,"activeContacts"=>168,"graveyarded"=>false,"state"=>"CA"}],"totalHits"=>1}
我想访问公司下的各个元素……比如城市和名字.
解决方法
像这样?
hash = { "companies" => [ { "city" => "San Mateo","name" => "Jigsaw","address" => "777 Mariners Island Blvd Ste 400","zip" => "94404-5059","country" => "USA","companyId" => 4427170,"activeContacts" => 168,"graveyarded" => false,"state" => "CA" } ],"totalHits" => 1 } hash['companies'].each{ |i| puts "city => #{i['city']}" puts "name => #{i['name']}" } # >> city => San Mateo # >> name => Jigsaw hash['companies'][0]['city'] # => "San Mateo" hash['companies'][0]['name'] # => "Jigsaw"
问题是你没有考虑公司指向的阵列.