Думаю, эта статья может быть полезна для вас - Rails to_json или as_json? Джонатана Джулиана.
Основная мысль заключается в том, что вам следует избегать использования to_json в контроллерах. Намного более гибко определить метод as_json в вашей модели.
Например:
В вашей модели Thing
def as_json(options={})
super(:include => :photos)
end
А затем вы можете написать в свой контроллер просто
render :json => @things
Я предполагаю, что решение в mochijson состоит в том, что он обрабатывает двоичный файл как строку, а список целых чисел - как список целых чисел. (Не?) К счастью, строки в Erlang на самом деле представляют собой список целых чисел.
В результате ваш «foo», или, другими словами, ваш [102,111,111] переводится в текст, представляющий «[102,111,111]». Во втором случае ваша строка << "foo" >> становится "foo"
Что касается второго вопроса, похоже, что mochijson всегда возвращает строку, тогда как mochijson2 возвращает тип iodata . Iodata - это в основном рекурсивный список строк, двоичных файлов и iodatas (фактически, iolists). Если вы намереваетесь отправить результат только «по сети», более эффективно просто вложить их в список, чем преобразовывать в плоскую строку.