Ответ 1
С Ruby 2.1 вы можете
require 'json'
'hello'.to_json
Драйвер json
не позволяет прямо кодировать строки в их представлении JSON. Я предварительно портировал этот код PHP:
$text = json_encode($string);
для этого Ruby:
text = string.inspect
и, похоже, он выполнил эту работу, но по какой-то причине, если сама string
содержит литеральную строку (это фактически JS-код) с символами новой строки, эти строки новой строки \n
будут оставаться как-есть \n
, а не закодированы до \\n
. Я понимаю, что это правильное поведение #inspect
, но...
Как кодировать строковое значение в его представлении JSON в Ruby?
С Ruby 2.1 вы можете
require 'json'
'hello'.to_json
Это работает со стандартной библиотекой 1.9.3+ JSON:
require 'json'
JSON.generate('foo', quirks_mode: true) # => "\"foo\""
Без quirks_mode: true
вы получите смешное "JSON:: GeneratorError: разрешено только создание объектов JSON или массивов".
Существует множество драгоценных камней JSON для Ruby, некоторые чистые Ruby, основанные на C, для лучшей производительности.
Вот тот, который предлагает как pure-Ruby, так и C: http://flori.github.com/json/
И тогда его существенно:
require 'json'
JSON.encode(something)
Популярным кодером/декодером JSON с собственными C-привязками для производительности является Yajl: https://github.com/brianmario/yajl-ruby
UPD от @Stewart:
JSON.encode
обеспечивается рельсами как object.to_json
. Для использования вне рельсов используйте JSON.generate
, который находится в ruby 1.9.3 std-lib. - Стюарт