Как получить доступ к данным в формате JSON, преобразованным в хэш-код в рубине? - PullRequest
3 голосов
/ 25 декабря 2010

Вот пример из кряковой документации:

json = '{"posts":[{"title":"Foobar"}, {"title":"Another"}]}'
Crack::JSON.parse(json)
=> {"posts"=>[{"title"=>"Foobar"}, {"title"=>"Another"}]}

Но как мне получить доступ к данным в хэше?

Я пробовал следующее:

array = Crack::JSON.parse(json)
array["posts"]

array ["posts"] показывает все значения, но я пробовал array ["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}

Я хочу получить доступ к отдельным элементам в компаниях .... например, город и название.

1 Ответ

7 голосов
/ 26 декабря 2010

Как это?

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"

Проблема в том, что вы не учли массив, на который указывает companies.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...