【发布时间】:2015-03-14 22:12:20
【问题描述】:
我正在访问这样的开放 JSON API
require 'net/http'
require 'rubygems'
require 'json'
require 'uri'
require 'pp'
url = "http://api.turfgame.com/v4/users"
uri = URI.parse(url)
data = [{"name" => "tbone"}]
headers = {"Content-Type" => "application/json"}
http = Net::HTTP.new(uri.host,uri.port)
response = http.post(uri.path,data.to_json,headers)
这给出了这样的 JSON 输出
[{"region"=>{"id"=>141, "name"=>"Stockholm"}, "medals"=>[34, 53, 12, 5, 46], "pointsPerHour"=>95, "blocktime"=>24, "zones"=>[275, 42460, 35956, 31926, 24247, 31722, 1097, 26104, 6072, 24283, 289, 325, 22199, 37740, 22198, 37743, 37074, 22845, 22201, 22846, 7477, 7310], "country"=>"se", "id"=>95195, "rank"=>24, "name"=>"tbone", "uniqueZonesTaken"=>178, "taken"=>1170, "points"=>41693, "place"=>377, "totalPoints"=>176654}]
我想做的是抓取一些标签:
- 名称(不在区域块中,而是在“tbone”中)
- 阻塞时间
- 总点数
- 区域数组中的所有 ID
并插入到 mysql 表中。但我不知道如何迭代 JSON 对象并获得我想要的东西。
在做
puts data["name"]
给出一个类似的错误
./headerTest.rb:28:in `[]': can't convert String into Integer (TypeError)
from ./headerTest.rb:28:in `<main>'
我知道这是因为有两个名称标签,但深度不同,但我不知道如何具体访问其中一个。
请?
【问题讨论】:
标签: mysql ruby arrays json parsing