json
gem不允许将字符串直接编码为其JSON表示。我暂时移植了这个PHP代码:
$text = json_encode($string);
这个Ruby:
text = string.inspect
它似乎完成了这项工作,但出于某种原因,如果string
本身包含带换行符的文字字符串(实际上是JS代码),这些换行符\n
将保持原样{{1 },不能编码为\n
。我能理解这是\\n
的正确行为,但是......
如何在Ruby中将字符串值编码为其JSON表示?
答案 0 :(得分:19)
这适用于股票1.9.3+标准库JSON:
require 'json'
JSON.generate('foo', quirks_mode: true) # => "\"foo\""
没有quirks_mode: true
,你会得到荒谬的“JSON :: GeneratorError:只允许生成一代JSON对象或数组”。
答案 1 :(得分:11)
从Ruby 2.1开始,你可以
require 'json'
'hello'.to_json
答案 2 :(得分:3)
Ruby中有无数的JSON宝石,一些基于C的纯Ruby,以获得更好的性能。
这是一个既提供纯Ruby又提供C: http://flori.github.com/json/
然后它本质上是:
require 'json'
JSON.encode(something)
一个流行的JSON编码器/解码器,具有用于提高性能的本机C绑定:Yajl:https://github.com/brianmario/yajl-ruby
@Stewart的UPD :
导轨JSON.encode
由object.to_json
提供。对于rails之外的用途,请使用ruby 1.9.3 std-lib中的JSON.generate
。 - 斯图尔特