Доступ к рельсам Json Object - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь создать переменную экземпляра, которая содержит список URL-адресов в заданном JSON. Возврат из этого вызова (https://en.wikipedia.org/w/api.php?action=query&titles=World&generator=images&gimlimit=10&prop=imageinfo&iiprop=url|dimensions|mime&format=json)

В первом случае, когда я обращаюсь к объекту по отдельности, используя, я получаю правильныйзначение. Если, однако, итерация для получения нескольких значений, я получаю.

неопределенный метод `[] 'для nil: NilClass (NoMethodError) ошибка

 @links=[] 
@description= @data_hash["query"]["pages"]["-1"]["imageinfo"][0]["url"] #Works ok
url = ("https://en.wikipedia.org/w/api.php?action=query&titles=World&generator=images&gimlimit=10&prop=imageinfo&iiprop=url|dimensions|mime&format=json")
  uri = URI(url)
  response = Net::HTTP.get(uri)
  @data_hash= JSON.parse(response)
 ["url"]
 @data_hash["query"]["pages"].map { |i|

    i.map { |e|
       @links<< e['imageinfo'][0]
      } 
    }

1 Ответ

0 голосов
/ 29 ноября 2018

Это должно работать:

@links = @data_hash['query']['pages']
           .values
           .map { |page| page['imageinfo'].first['url'] }
...