json
gemでは、文字列をJSON表現に直接エンコードすることはできません。私はこれを一時的に移植しましたPHPコード:
$text = json_encode($string);
このRubyに:
text = string.inspect
そしてそれは仕事をするように見えたが、何らかの理由でstring
自体に改行付きのリテラル文字列(実際にはJSコード)が含まれている場合、これらの改行\n
はそのまま\n
、\\n
にエンコードしないでください。これが#inspect
の正しい動作であるかどうかは理解できますが、...
Rubyで文字列値をJSON表現にエンコードするにはどうすればよいですか?
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オブジェクトまたは配列の生成のみが許可されます"になります。
Rubyには無数のJSON gemがあり、純粋なRubyパフォーマンスを向上させるためにCベースのものがいくつかあります。
以下は、pure-RubyとCの両方を提供するものです。 http://flori.github.com/json/
そして本質的に:
require 'json'
JSON.encode(something)
パフォーマンスのためのネイティブCバインディングを備えた人気のあるJSONエンコーダー/デコーダーはYajlです: https://github.com/brianmario/yajl-Ruby
UPD from @Stewart:JSON.encode
は、Railsと同様にobject.to_json
によって提供されます。 Rails use JSON.generate
外で使用Ruby 1.9.3 std-lib。– Stewart