我想访问Facebook Graph API并获得这样的JSON响应:
{
"data": [
{
"name": "Coldplay",
"category": "Musician/band",
"id": "15253175252",
"created_time": "2012-01-27T22:51:44+0000"
},
{
"name": "R.E.M.",
"category": "Musician/band",
"id": "8759772983",
"created_time": "2012-01-27T22:51:43+0000"
}
],
"paging": {
"next": "https://graph.facebook.com/1000032123447/music?format=json&limit=5000&offset=5000&__after_id=8123918"
}
}
现在我想将名称,类别和ID保存到我的rails数据库中。 我有一张包含相同列的表。
将此响应保存到数据库的匹配列中的最简单方法是什么?或者是否有更好的解决方案,即只是将整个json对象保存到数据库中并稍后再次在代码中读取它?
如果您有时间,请提供javascript / jQuery(可能是ajax)和ruby代码的编码示例。非常感谢你!
答案 0 :(得分:3)
有关如何将JSON内容从浏览器发送到Rails应用程序的信息,请参阅this question and answer。
然后你可以做这样的事情(JSON将被自动解析,并可用作params
哈希)。需要注意的一点是,JSON中的id
属性将被忽略,因为它默认受保护(Rails使用id
作为记录的主键)。最好将其“重命名”为facebook_id
:
# POST /path/to/collection
def create
params["data"].each do |data|
data["facebook_id"] = data["id"]
SomeRecordClass.create(data)
end
end
当然,你需要做一些错误检查,发送回复等等。
在浏览器中,如果您使用的是jQuery
,则可以执行此类操作$.ajax({
type: "POST",
url: "/path/to/collection",
data: data, // the JSON data, as an object or string
contentType: "application/json",
dataType: "json"
});