2012-10-24 113 views
2

我有一个JSON对象,发布到我的轨道控制器。由于某些原因,Rails无法解析JSON对象。当JSON对象嵌套时使用Ruby解析JSON?

这导致空:Rails.logger.info params[:payload]["commits"]

这里是Rails代码:

before_filter :set_payload 

def create 
    params[:payload] = @payload 
    Rails.logger.info params[:payload]["commits"] 
......... 

protected 

    def set_payload 
    @payload = { 
     "data" => { 
     "api_version" => "2.0.alpha1", 
     "username" => "jamie.winsor", 
     "password" => "passw0rd", 
     "server_url" => "http://jira" 
     }, 

     "payload" => { 
     "after" => "a47fd41f3aa4610ea527dcc1669dfdb9c15c5425", 
     "ref"  => "refs/heads/master", 
     "before" => "4c8124ffcf4039d292442eeccabdeca5af5c5017", 
     "compare" => "http://github.com/mojombo/grit/compare/4c8124ffcf4039d292442eeccabdeca5af5c5017...a47fd41f3aa4610ea527dcc1669dfdb9c15c5425", 
     "forced" => false, 
     "created" => false, 
     "deleted" => false, 

     "repository" => { 
      "name" => "grit", 
      "url" => "http://github.com/mojombo/grit", 
      "owner" => { "name" => "mojombo", "email" => "[email protected]" } 
     }, 

     "pusher" => { 
      "name" => "rtomayko" 
     }, 

     "commits" => [ 
      { 
      "distinct" => true, 
      "removed" => [], 
      "message" => "[#WEB-249 status:31 resolution:1] stub git call for Grit#heads test", 
      "added"  => [], 
      "timestamp" => "2007-10-10T00:11:02-07:00", 
      "modified" => ["lib/grit/grit.rb", "test/helper.rb", "test/test_grit.rb"], 
      "url"  => "http://github.com/mojombo/grit/commit/06f63b43050935962f84fe54473a7c5de7977325", 
      "author" => { "name" => "Tom Preston-Werner", "email" => "[email protected]" }, 
      "id"  => "06f63b43050935962f84fe54473a7c5de7977325" 
      }, 
      { 
      "distinct" => true, 
      "removed" => [], 
      "message" => "clean up heads test", 
      "added"  => [], 
      "timestamp" => "2007-10-10T00:18:20-07:00", 
      "modified" => ["test/test_grit.rb"], 
      "url"  => "http://github.com/mojombo/grit/commit/5057e76a11abd02e83b7d3d3171c4b68d9c88480", 
      "author" => { "name" => "Tom Preston-Werner", "email" => "[email protected]" }, 
      "id"  => "5057e76a11abd02e83b7d3d3171c4b68d9c88480" 
      }, 
      { 
      "distinct" => true, 
      "removed" => [], 
      "message" => "add more comments throughout", 
      "added"  => [], 
      "timestamp" => "2007-10-10T00:50:39-07:00", 
      "modified" => ["lib/grit.rb", "lib/grit/commit.rb", "lib/grit/grit.rb"], 
      "url"  => "http://github.com/mojombo/grit/commit/a47fd41f3aa4610ea527dcc1669dfdb9c15c5425", 
      "author" => { "name" => "Tom Preston-Werner", "email" => "[email protected]" }, 
      "id"  => "a47fd41f3aa4610ea527dcc1669dfdb9c15c5425" 
      } 
     ] 
     } 
    } 

    end 

end 

为什么被退回无任何想法?我是否正确处理JSON对象?谢谢

回答

4

你正在使用你想要的元素的错误路径。您需要访问它:

params[:payload]["payload"]["commits"]