数据未格式化为JSON

时间:2011-08-29 10:45:40

标签: ruby-on-rails-3 facebook-graph-api

我在Facebook请求中执行以下操作:

function sendRequests() {
                FB.ui({
                method: 'apprequests',
                message: "You are invited to the surprise Birthday",
                data:{"board_id":<%=@board.id%>}

当我从接受应用程序的用户那里获取请求对象时,我将其解析为JSON对象,如下所示:

的ActiveSupport :: JSON.decode(request_body.body)

除了我发送的数据外,所有信息都被格式化为Hash应该在Rails中,如下所示:

"data"=>"{\"board_id\":1}"

我尝试了各种组合,但它不能正确转换。我错过了什么,或者facebook图表api返回的JSON需要格式化不同吗?

2 个答案:

答案 0 :(得分:1)

尝试复制数据并在此处手动验证:http://jsonlint.com/

它帮了我很多次。

答案 1 :(得分:0)

最后我做了以下事情:

在facebook fb.ui

    FB.ui({
        method: 'apprequests',
    exclude_ids: <%=@invited_guests.map{|guest| guest.provider_user_id} %>,
        message: <%="'You are invited to the surprise Birthday board for #{@board.bp_name}'" %>,
             title: "Come celebrate with us",
    data: "board_id:<%=@board.id%>"

然后在Facebook中接受请求后在控制器中:

request_content = ActiveSupport::JSON.decode(request_body.body)
      board = ActiveSupport::JSON.decode(request_content["data"])

我必须解码两次。一次针对整个请求,第二次针对特定数据信息传递。它可能不太漂亮,但它有效。