从JSON嵌套哈希中提取特定字段

时间:2014-01-10 05:16:05

标签: ruby-on-rails ruby web-crawler

我正在考虑编写一个抓取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"
    }
}

2 个答案:

答案 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)