在Rails中将JSON字符串转换为JSON对象



我正在从Rails控制器接收JSON字符串并将其传递给工作人员;然而,当它到达工作器时,它被转换为字符串,然后我试图将其转换回JSON。当我这样做时,我收到错误。

下面是我尝试做的一个例子,以及当尝试这样做时收到的错误:

[18] pry(#<SampleWorker>)> str = '{"id"=>"F02DD5GH77X", "created"=>1630584313, "timestamp"=>1630584313}'
=> "{"id"=>"F02DD5GH77X", "created"=>1630584313, "timestamp"=>1630584313}"
[19] pry(#<SampleWorker>)> JSON.parse(str)
JSON::ParserError: 809: unexpected token at '{"id"=>"F02DD5GH77X", "created"=>1630584313, "timestamp"=>1630584313}'
from /usr/local/lib/ruby/3.0.0/json/common.rb:216:in `parse'
[20] pry(#<SampleWorker>)> JSON(str)
JSON::ParserError: 809: unexpected token at '{"id"=>"F02DD5GH77X", "created"=>1630584313, "timestamp"=>1630584313}'
from /usr/local/lib/ruby/3.0.0/json/common.rb:216:in `parse'
[21] pry(#<SampleWorker>)> 

我甚至试图替换",但似乎没有帮助:

[26] pry(#<SampleWorker>)> str.gsub(""", "'")
=> "{'id'=>'F02DD5GH77X', 'created'=>1630584313, 'timestamp'=>1630584313}"
[27] pry(#<SampleWorker>)> JSON.parse(str.gsub(""", "'"))
JSON::ParserError: 809: unexpected token at '{'id'=>'F02DD5GH77X', 'created'=>1630584313, 'timestamp'=>1630584313}'
from /usr/local/lib/ruby/3.0.0/json/common.rb:216:in `parse'
[28] pry(#<SampleWorker>)> 

您需要将=>替换为:

str = str.gsub("=>", ":")
# => "{"id":"F02DD5GH77X", "created":1630584313, "timestamp":1630584313}"
JSON.parse(str)
# => {"id"=>"F02DD5GH77X", "created"=>1630584313, "timestamp"=>1630584313}

最新更新