将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的UPDJSON.encode由rails提供,与object.to_json 。 对于rails之外的用途,请使用位于ruby 1.9.3 std-lib中的JSON.generate 。 – 斯图尔特