在Ruby 1.9中,如何将哈希转换为JSON字符串?

31
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 返回了带有反斜杠的我想要的答案。我不想要反斜杠。


我已经更新了问题,包括标准输出和返回值。 - ma11hew28
1
太棒了,我不知道 j 的存在。我们经常使用 y 来格式化哈希和对象。 - so_mv
3个回答

53

这只是由于 String#inspect。没有反斜杠。尝试:

hjs = hash.to_json
puts hjs

14

你走在正确的道路上。 to_json 将其转换为 JSON 格式。不要被 IRB 输出所迷惑 - 它不含任何反斜杠。

尝试这样做: puts hash.to_json 你应该会看到这个结果: {"hi":"sup","yo":"hey"}


5

我没有Ruby1.9版本进行测试,但显然您正在获得“inspect”视图。那些反斜杠实际上不存在,它们只是转义引号。运行puts hash.to_json进行检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接