Вам нужно что-то вроде response[0]["sgv"]
, которое должно возвращать 52
, если у вас будет много элементов в списке, вам нужно будет перебрать их.
Лучшее, что вы можете сделать, это сломать свойпроблема в более простых частях для отладки.Поскольку у вас возникают проблемы с доступом к некоторым JSON
через API, вы должны сделать простой скрипт, который выполняет только ту функцию, которую вы хотите, чтобы протестировать ее и увидеть, в чем проблема.
Вот небольшой пример, который выможно поместить в файл .rb
и запустить;
#!/usr/bin/ruby
require 'open-uri'
require 'json'
test = JSON.parse(open("https://dnarnianbg.herokuapp.com/api/v1/entries/current.json", :read_timeout => 4).read)
puts test[0]["sgv"]
Это должно вернуть значение из sgv
Я понимаю, что короткий и приятный пример может оказаться мало полезным для ученика, поэтому здесьболее подробный вариант с некоторыми комментариями;
#!/usr/bin/ruby
require 'open-uri'
require 'json'
# Open the URL and read the result. Time out if this takes longer then 4 sec.
get_data = open("https://dnarnianbg.herokuapp.com/api/v1/entries/current.json", :read_timeout => 4).read
# Parse the response (get_data) to JSON and put in variable output
output = JSON.parse(get_data)
# Put the output to get the 'sgv figure'
p output[0]["sgv"]
Всегда полезно вручную проверять возвращаемые данные, в вашем случае данные выглядят так (когда выглядят симпатично)
[
{
"_id": "5ba41a0fb8a1ee0aedf6eb2c",
"sgv": 144,
"date": 1537481109000,
"dateString": "2018-09-20T22:05:09.000Z",
"trend": 4,
"direction": "Flat",
"device": "share2",
"type": "sgv"
}
]
То, что у вас на самом деле , есть Array .Ваш сервер возвращает только 1 результат с номером 0, следовательно, вам нужно [0]
в вашем p
выражении.Получив доступ к идентификатору массива, вы можете просто использовать нужный вам объект как [sgv]
Если ваше приложение когда-либо возвращает более одной записи, вам нужно будет изменить код, чтобы прочитать все результаты ипереберите их, чтобы получить все нужные значения.