将Ruby字符串编码为JSON字符串

Fél*_*lli 21 ruby string json escaping

json宝石不允许直接编码字符串到他们的JSON表示.我暂时移植了这个PHP代码:

$text = json_encode($string);
Run Code Online (Sandbox Code Playgroud)

对这个Ruby:

text = string.inspect
Run Code Online (Sandbox Code Playgroud)

并且它似乎完成了这项工作,但出于某种原因,如果它string本身包含带有换行符的文字字符串(它实际上是JS代码),这些新\n行将保持原样\n,不进行编码\\n.我能理解这是否是正确的行为#inspect,但......

如何在Ruby中将字符串值编码为其JSON表示?

Joh*_*ohn 20

这适用于库存1.9.3+标准库JSON:

require 'json'
JSON.generate('foo', quirks_mode: true) # => "\"foo\""
Run Code Online (Sandbox Code Playgroud)

没有quirks_mode: true,你会得到荒谬的"JSON :: GeneratorError:只允许生成一代JSON对象或数组".


Tha*_*hai 13

从Ruby 2.1开始,你可以

require 'json'

'hello'.to_json
Run Code Online (Sandbox Code Playgroud)