【发布时间】:2021-10-31 22:07:10
【问题描述】:
我从 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>)>
【问题讨论】:
-
您没有从 SampleWorker 获取 JSON。您将获得
Hash#to_s的输出。{ "foo" => 'bar' }.to_s提供"{\"foo\"=>\"bar\"}"。 SampleWorker 是否在您的控制之下?
标签: ruby-on-rails json