Как вы печатаете JSON из рубинового драйвера mongdb? - PullRequest
2 голосов
/ 01 августа 2010

Когда я выполняю запрос на поиск из консоли mongodb JavaScript, я получаю прекрасный ответ JSON. Однако, когда я делаю поиск с драйвером ruby, он сохраняет JSON как некоторый объект Ruby. Как мне преобразовать это обратно в JSON? Или, что еще лучше, как мне получить JSON без дополнительных преобразований?

Ответы [ 3 ]

3 голосов
/ 04 августа 2010

Я получил это работает. Я использовал ruby-1.9.1-p378 с rvm. Я удалил это. Теперь я использую систему ruby-1.8.7-p174, поставляемую с установочным DVD SnowLeopard. Но я все еще получал ошибку с методом 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, как api-график на facebook. Чтобы вернуть JSON все в одну строку, просто сделайте что-то вроде:

  cursor.to_a.to_json
1 голос
/ 01 августа 2010

Код JSON, который вы получаете на консоли javascript, также конвертируется.Это не собственный вывод MongoDB, нативный формат - BSON .Чтобы получить JSON на консоли javascript, его необходимо преобразовать.В Ruby вы должны делать то же самое с методом экземпляра .to_json вашего объекта.

0 голосов
/ 19 августа 2013

теперь вы можете сделать cursor.find.to_a.inspect

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...