Этот вопрос вряд ли поможет любым будущим посетителям; это только относится к небольшой географической области, определенный момент вовремя или чрезвычайно узкая ситуация, которая не обычно применима к глобальной аудитории Интернета. Для справки, делающей этот вопрос, более широко применимый
, посетите справочный центр .
Закрытый 7 лет назад .
Я пытаюсь сделать веб-сервис с помощью Ruby Sinatra и MongoDB. Это возвратит объекты JSON. Я решил использовать MongoDB, частично, потому что он хранит документы внутренне в "подобной JSON" структуре. Я думал, что это поможет мне выполнить запрос и отправить результат JSON клиенту. Однако я столкнулся с проблемами, преобразовывающими результаты MongoDB в JSON.
find_one MongoDB () возвращает BSON:: OrderedHash. Из документации кажется, что это должно вести себя подобное типу Хеша Ruby. Когда я пытаюсь преобразовать его в JSON использование функции .to_json, я получаю "уровень стека слишком глубоко" ошибка. Попытка преобразовать идентичное работает просто великолепно.
Этот код работает как, я ожидал бы:
require "json"
my_hash = Hash.new
my_hash[ "a" ] = "aaa"
my_hash[ "b" ] = 9
puts my_hash.to_json
Этот код производит 'to_json': уровень стека, слишком глубокий (SystemStackError):
require "json"
require "bson"
my_bson = BSON::OrderedHash.new
my_bson[ "a" ] = "aaa"
my_bson[ "b" ] = 9
puts my_bson.to_json
Попытка преобразовать в хеш сначала не помогла. Та же ошибка.
puts my_bson.to_hash.to_json
Почему я получаю уровень стека слишком глубокая ошибка? Это - простой хеш. Существует ли легкое к преобразовать результаты MongoDB в JSON? Я не хочу писать функцию преобразования, которая характерна для моих данных. Это побеждает точку, имеют бессхемную базу данных.