我需要解析一个对我来说太复杂的Json数组。几天来我一直在尝试没有成功。如果anyoboby能帮助我,我会非常感激。 乔恩是:用导轨解析json
http://ergast.com/api/f1/2014/driverStandings.json
而我想做的看法是一样的东西:
1汉密尔顿奔驰384
需要它来访问不同的对象,即时得到疯了。
谢谢!
我需要解析一个对我来说太复杂的Json数组。几天来我一直在尝试没有成功。如果anyoboby能帮助我,我会非常感激。 乔恩是:用导轨解析json
http://ergast.com/api/f1/2014/driverStandings.json
而我想做的看法是一样的东西:
1汉密尔顿奔驰384
需要它来访问不同的对象,即时得到疯了。
谢谢!
使用open-uri
打开并读取远程文件,然后用json
解析它。你必须深入挖掘的结果散列去的司机积分榜:
require 'open-uri'
require 'json'
url = "http://ergast.com/api/f1/2014/driverStandings.json"
data = JSON.parse(open(url).read)
standings = data['MRData']['StandingsTable']['StandingsLists'][0]['DriverStandings']
standings.each do |driver|
puts [driver['position'], driver['Driver']['givenName'], driver['Driver']['familyName'], driver['Constructors'][0]['name'], driver['points']].join(' ')
end
输出:
所有的1 Lewis Hamilton Mercedes 384
2 Nico Rosberg Mercedes 317
3 Daniel Ricciardo Red Bull 238
4 Valtteri Bottas Williams 186
5 Sebastian Vettel Red Bull 167
6 Fernando Alonso Ferrari 161
7 Felipe Massa Williams 134
8 Jenson Button McLaren 126
9 Nico Hülkenberg Force India 96
10 Sergio Pérez Force India 59
11 Kevin Magnussen McLaren 55
12 Kimi Räikkönen Ferrari 55
13 Jean-Éric Vergne Toro Rosso 22
14 Romain Grosjean Lotus F1 8
15 Daniil Kvyat Toro Rosso 8
16 Pastor Maldonado Lotus F1 2
17 Jules Bianchi Marussia 2
18 Adrian Sutil Sauber 0
19 Marcus Ericsson Caterham 0
20 Esteban Gutiérrez Sauber 0
21 Max Chilton Marussia 0
22 Kamui Kobayashi Caterham 0
23 Will Stevens Caterham 0
24 André Lotterer Caterham 0
我更正了变量名称。它应该被称为'url'。定期从JSON中获取信息并将其存储在数据库中可能会更好,您可以将其检索以供显示。 – infused 2015-04-02 17:33:02
我已经用不同的评论回答了你,我不能在这里做。非常感谢! – 2015-04-02 17:44:06
我从2天开始就挣扎着,我什么也看不见。你有任何想法如何将其存储在数据库中? – 2015-04-02 19:12:11
首先,thak你了。在我编辑我的评论的时候你纠正了代码。我之前尝试的是试图存储在我的数据库中。该代码是像.... 响应= HTTParty.get( 'http://ergast.com/api/f1/2014/driverStandings.json') 结果= JSON.parse(response.body) #导致= Steam.getAll()
@members = Array.new
result.each do |member|
@new_member = Member.new
@new_member.from_json(member.to_json)
@members << @new_member
Im去看看如何将它存储在我的数据库中。我想第一个明显的步骤是创建一个具有相同结构的模型。
这是我现在的代码:
def index
require 'open-uri'
require 'json'
@member = Member.new
url = "http://ergast.com/api/f1/2014/driverStandings.json"
data = JSON.parse(open(url).read)
standings = data['MRData']['StandingsTable']['StandingsLists'][0]['DriverStandings']
standings.each do |driver|
@member.position = driver['position']
@member.givenName = driver['Driver']['givenName']
@member.familyName = driver['Driver']['familyName']
@member.constructor = driver['Constructors'][0]['name']
@member.points = driver['points']
end
@members = Member.all
end
end
***It doesn´t store anything and neither show in the view, which it is somehing like:
<% @members.each do |member| %>
<tr>
.............
<td><%= @member.position%> </td>
</tr>
<% end %>
你尝试过什么?解析JSON与'require'json'一样简单; data = JSON.parse(string)'。你究竟在哪里卡住? – Amadan 2015-04-02 01:43:26
嗨,我已经尝试了在导轨指南中解释的解决方案。 http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html#method-i-from_json – 2015-04-02 17:20:36