web-dev-qa-db-ja.com

Ruby 1.9でハッシュをJSON文字列に変換するにはどうすればよいですか?

Ruby-1.9.2-p0 > require 'json'
 => true 
Ruby-1.9.2-p0 > hash = {hi: "sup", yo: "hey"}
 => {:hi=>"sup", :yo=>"hey"} 
Ruby-1.9.2-p0 > hash.to_json
 => "{\"hi\":\"sup\",\"yo\":\"hey\"}"
Ruby-1.9.2-p0 > j hash
{"hi":"sup","yo":"hey"}
 => nil 

j hashは私が欲しい答えを出しますがnilを返します。

hash.to_jsonは、必要な答えをバックスラッシュで返します。バックスラッシュは必要ありません。

28
ma11hew28

それは単にString#inspect。バックスラッシュはありません。試してください:

hjs = hash.to_json
puts hjs
48
Phrogz

あなたは正しい軌道に乗っています。 to_jsonをJSON形式に変換します。 IRB出力に騙されないでください。バックスラッシュは含まれていません。

これを試して: puts hash.to_jsonと表示されます:{"hi":"sup","yo":"hey"}

13
John Douthat

テストするRuby1.9はありませんが、「inspect」ビューを取得しているようです。これらのバックスラッシュはありません。引用符をエスケープしています。確認するには、puts hash.to_jsonを実行します。

5
tokland