将Ruby字符串编码为JSON字符串
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中有无数的JSONgem,一些基于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
由rails提供,与object.to_json
。 对于rails之外的用途,请使用位于ruby 1.9.3 std-lib中的JSON.generate
。 – 斯图尔特