@Panda_Code
Сognizer

Как взять данные с JSON?

Ребята, добрый вечер!

На python, чтобы взять данные:
import requests

link = "https://openexchangerates.org/api/latest.json?app_id=60da2bd9b3064714b2c5f2e8b00fbd40%22"
data = requests.get(link)
rates = data.json()['rates']
print(rates['USD'])

А, как то же самое сделать на ruby?

Пробовал так:
require 'json'
link = 'https://openexchangerates.org/api/latest.json?app_id=60da2bd9b3064714b2c5f2e8b00fbd40%22' 
puts JSON.parse(link)  # понимаю, что чушь пишу

Заранее спасибо!
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
В целом вы правильно начали.
JSON.parse действительно нужен для разбора JSON в более привычный для Ruby класс Hash.
Только вы пытались распарсить строку с URL адресом, а не с тем, что за ней скрывается.
Ниже я написал для вас простой пример, с использованием стандартных для Ruby библиотек.

# frozen_string_literal: true

# require dependence gems
require 'net/http' # for http request
require 'json' # for JSON parse

# create URI instance
url = URI.parse 'https://openexchangerates.org/api/latest.json?app_id=60da2bd9b3064714b2c5f2e8b00fbd40%22'

# create simple HTTP GET request
response = Net::HTTP.get_response url

# get body from response
response_body = response.body

# magic! parse response_body from JSON to Ruby Hash class.
#
# second argument is optional
# convert String keys to Symbol, ex. { "foo" => 42 } to { foo: 42 }
result = JSON.parse response_body, symbolize_names: true

# print rates for USD
puts result[:rates][:USD]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы