你如何从mongodb ruby​​驱动程序中打印JSON?

时间:2010-08-01 08:45:39

标签: ruby json mongodb

当我从mongodb JavaScript控制台执行查找查询时,我得到了一个漂亮的JSON响应。但是,当我使用ruby驱动程序进行查找时,它将JSON存储为一些Ruby对象。如何将其转换回JSON?或者,更好的是,如何在不进行额外转换的情况下获取JSON?

3 个答案:

答案 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