response = Typhoeus::Request.get("http://localhost:3000/api/api_email/#{@api_id}.json")
JSON.parse(response.body)
响应是JSON对象,但在尝试解析时遇到错误。
undefined method `bytesize' for
我希望能够访问JSON对象。
错误:
NoMethodError at /api/v1/a71040739d6cc50e89aff56601af67/2011-10-1
undefined method `bytesize' for {"xpto"=>{"email
"=>"test@gmail.com"}}:Hash
file: utils.rb location: bytesize line: 239
回溯:
/Users/donald/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/webrick/httpserver.rb in service
si.service(req, res)
/Users/donald/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/webrick/httpserver.rb in run
server.service(req, res)
/Users/donald/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/webrick/server.rb in block in start_thread
block ? block.call(sock) : run(sock)
这是如何生成的:
@api_id = params[:api_id]
@bucket = Bucket.where(:api => @api_id)
respond_with(@bucket, :only => [:email])
返回的.json文件包含:
[{"xpto":{"email":"test@gmail.com"}}]
答案 0 :(得分:6)
这很奇怪,因为似乎response.body已经是哈希了! (即解析的JSON字符串),或者,您可能在webrick的日志中看到了这一点,因此问题在于生成 JSON响应,而不是解析它。回溯没有意义:(
答案 1 :(得分:2)
这可能是兼容性问题。如果您使用的是ruby1.9,则可能不会出现此问题,但如果您使用的是其他版本/实现,例如ruby 1.8或IronRuby,则可能未定义String#bytesize
。