【发布时间】:2013-05-27 03:16:49
【问题描述】:
我正在尝试从 last.fm 中获取一些数据并在一个简单的 sinatra 应用程序中使用它。我已经弄清楚如何打开文档,但是在 ruby 中提取数据时遇到问题,这是我想获取名称的 API 数据的第一个列表:
{"similarartists":{"artist":[{"name":"Sonny & Cher"}]}
这只是返回的摘录,我在我的 rb 文件中使用它:
require 'json'
require 'open-uri'
data = JSON.parse(open("http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist=editors&api_key=xxx&format=json").read)
puts data["similarartists"]["artist"]["name"]
它似乎不起作用我无法在 ruby 1.9.3 上将 String 转换为 Integer (TypeError) 但 JSON 中的名称不是整数?如果我只是输入以下内容:
puts data["similarartists"]["artist"]
它返回整个东西,但我想抓住它并得到名字。
"name"=>"Interpol"
我不明白为什么当名称是字符串时它会抱怨整数?希望有人可以帮助我!
【问题讨论】:
-
在您尝试访问
data['similarartists']['artist']['name']之前,data是什么样的?你确定你得到了存储在data中的精确 JSON 吗? -
我刚刚做了一个 puts 数据,这里是一个开头的 sn-p {"similarartists"=>{"artist"=>[{"name"=>"Interpol", " mbid"=>"b23e8a63-8f47-4882-b
-
您是否在 mbid 末尾缺少
"?希望我可以对此进行测试,但我没有 Last.FM API 密钥。 -
没错,输出很长,所以我只发送了第一行,所以你可以看到,这只是我想要的名字。我只是想表明名称不包含任何整数?
-
您在 cmets 中的结构表明问题是艺术家是艺术家的数组,所以问题是您试图直接采用
['name']但这不是整数索引,这就是红宝石告诉你。应该是data['similarartists']['artist'][0]['name']