从节点中提取JSON数据?

时间:2012-05-18 11:04:17

标签: ruby-on-rails ruby-on-rails-3 json

以Twitter的请求为例: https://api.twitter.com/1/users/show.json?screen_name=stephenfry&include_entities=true

我可以使用result["followers_count"]

提取像followers_count这样的元素

我尝试过对LastFM的类似请求,但他们的JSON结构不同,因为它是默认XML的翻译。

通过他们的演示请求: http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Cher&api_key=b25b959554ed76058ac220b7b2e0a026&format=json

我如何获得听众的价值?

我试过

result["listeners"]

result["artist.listeners"]

result["artist.stats.listeners"]

我知道我需要访问一个节点,但不知道如何去实现它。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

这是一个嵌套的哈希值,因此您可以通过以下方式访问它:

result["artist"]["stats"]["listeners"]

示例:

require('open-uri')
require('json')

result = JSON.parse(open('http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Cher&api_key=b25b959554ed76058ac220b7b2e0a026&format=json').read)
result["artist"]["stats"]["listeners"].to_i

答案 1 :(得分:0)

Last.fm数据是一系列嵌套哈希,因此您需要这样访问它们。试试下面的内容,它应该可以解决问题:

result["artist"]["listeners"]