我正在为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]中获取值,这会很棒。 谢谢。
答案 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"