从具有复杂散列的Params获取特定键的值

时间:2016-04-15 03:11:55

标签: ruby-on-rails ruby facebook facebook-messenger

我正在为Facebook Messenger开发一个应用程序,我从Messenger获取这个参数。我想采取这些参数并存储发件人,文本和其他数据。但是我无法在控制器中获得这些参数。

当我尝试params[:text]它不起作用时,如果我尝试params[:entry][:messaging][1]或类似的任何东西都不起作用。

{"object":"page",
  "entry":[
    {
      "id":"PAGE_ID",
      "time":1460245674269,
      "messaging":[
        {
          "sender":{
            "id":"USER_ID"
          },
          "recipient":{
            "id":"PAGE_ID"
          },
          "timestamp":1460245672080,
          "message":{
            "mid":"mid.1460245671959:dad2ec9421b03d6f78",
            "seq":216,
            "text":"hello"
          }
        }
      ]
    }
  ]
}

如果你能告诉我如何编写我的控制器,那么我可以从[:text]中获取值,这会很棒。 谢谢。

1 个答案:

答案 0 :(得分:0)

您只需简单地解析您的JSON并进行抓取,直到达到指定的密钥为止,您希望获得文本密钥

这样做:

我假设您获得的JSON被分配给json_value变量:

json_value = '{"object":"page",
  "entry":[
    {
      "id":"PAGE_ID",
      "time":1460245674269,
      "messaging":[
        {
          "sender":{
            "id":"USER_ID"
          },
          "recipient":{
            "id":"PAGE_ID"
          },
          "timestamp":1460245672080,
          "message":{
            "mid":"mid.1460245671959:dad2ec9421b03d6f78",
            "seq":216,
            "text":"hello"
          }
        }
      ]
    }
  ]
}'

接下来,解析JSON:

json = JSON.parse(json_value)

然后,现在,您可以获得想要的价值:

json["entry"][0]["messaging"][0]["message"]["text"]

输出:

=> "hello"

Demonstration

相关问题