我正在考虑编写一个抓取API的Web应用程序,并以JSON格式返回此信息。
但是,我只是在一个数字之后,然后是当前价格(在此样本中,“227”)。如何在Ruby中访问它?我不知道从哪里开始。我从未处理过这样的文字。
为了便于讨论,假设我将此输出保存到实例变量@information
{
"item": {
"icon": "http://services.runescape.com/m=itemdb_rs/4332_obj_sprite.gif?id=4798",
"icon_large": "http://services.runescape.com/m=itemdb_rs/4332_obj_big.gif?id=4798",
"id": 4798,
"type": "Ammo",
"typeIcon": "http://www.runescape.com/img/categories/Ammo",
"name": "Adamant brutal",
"description": "Blunt adamantite arrow...ouch",
"current": {
"trend": "neutral",
"price": 227
},
"today": {
"trend": "neutral",
"price": 0
},
"day30": {
"trend": "positive",
"change": "+1.0%"
},
"day90": {
"trend": "positive",
"change": "+1.0%"
},
"day180": {
"trend": "positive",
"change": "+2.0%"
},
"members": "true"
}
}
答案 0 :(得分:2)
首先按照此帖子将 JSON 解析为哈希 Parsing a JSON string in Ruby
说解析的哈希名称是my_hash,那么以下应该给你价格
my_hash['item']['current']['price']
修改强>
正如您所说,您希望将其保存在@information
@information = my_hash['item']['current']['price']
答案 1 :(得分:0)
即使您可以使用hashie,它也会让您的json成为可读的结构代码
安装Hashie
gem install hashie
然后在你的代码中json接受变量my_json
myhash = Hashie::Mash.new(my_json)
@information = my_hash.item.current.price
提示: - 如果你的json是动态的,它可能会响应一些其他的结构元素,所以你可以保持特殊的代码
@information = my_hash.item.try(:current).try(:price)