Кодировать строку Ruby в строку JSON - PullRequest
21 голосов
/ 22 июля 2011

Gem json не позволяет напрямую кодировать строки в их JSON-представление.Я предварительно портировал этот код PHP:

$text = json_encode($string);

на этот Ruby:

text = string.inspect

, и он, похоже, справился с задачей, но по какой-то причине, если сам string содержит буквенную строку(на самом деле это код JS) с символами новой строки эти символы новой строки \n останутся как есть \n, а не будут закодированы в \\n.Я могу понять, является ли это правильным поведением #inspect, но ...

Как можно кодировать строковое значение в его JSON-представление в Ruby?

Ответы [ 3 ]

20 голосов
/ 27 июня 2013

Работает со стандартной библиотекой JSON версии 1.9.3+:

require 'json'
JSON.generate('foo', quirks_mode: true) # => "\"foo\""

Без quirks_mode: true вы получите нелепый «JSON :: GeneratorError: разрешено только создание объектов или массивов JSON».

11 голосов
/ 10 октября 2014

Начиная с Ruby 2.1, вы можете

require 'json'

'hello'.to_json
3 голосов
/ 22 июля 2011

Существует множество гемов JSON для Ruby, немного чистого Ruby, основанное на C, для лучшей производительности.

Вот тот, который предлагает как чистый 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. - Стюарт

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