当我从mongodb JavaScript控制台执行查找查询时,我得到了一个漂亮的JSON响应。但是,当我使用ruby驱动程序进行查找时,它将JSON存储为一些Ruby对象。如何将其转换回JSON?或者,更好的是,如何在不进行额外转换的情况下获取JSON?
答案 0 :(得分:3)
我得到了它的工作。我正在使用ruby-1.9.1-p378和rvm。我删除了。现在,我正在使用SnowLeopard安装DVD附带的系统ruby-1.8.7-p174。但是,我仍然在使用to_json方法时遇到错误,除非这次它说堆栈级别太深。我做了:
require 'json/pure'
而不是
require 'json'
然后,我将代码更改为如下所示: http://github.com/banker/mongulator/blob/master/mongulator.rb#L53
以下是代码的相关部分:
cursor = persons.find(
{"loc" => {"$near" => [params[:lat].to_f, params[:lng].to_f]}},
{:limit => 20})
content_type "application/json"
JSON.pretty_generate(cursor.to_a)
完整的文件在这里: http://github.com/acani/acani-sinatra/blob/master/acani.rb
并且,它工作,即使像漂亮的json像Facebook图形api给你。要在一行中返回所有JSON,只需执行以下操作:
cursor.to_a.to_json
答案 1 :(得分:1)
您在javascript控制台上获得的JSON代码也会被转换。它不是MongoDB的本机输出,Native格式是BSON。要在javascript控制台上获取JSON,必须将其转换。在Ruby中,您应该能够使用Object的.to_json
实例方法执行相同的操作。
答案 2 :(得分:0)
现在你可以cursor.find.to_a.inspect