解析哈希时出现Json Parse错误

时间:2013-03-08 09:00:34

标签: ruby json ruby-on-rails-3 parsing

我正在开发Ruby on Rails。我有一个像下面这样的哈希

{"attachment"=>"{:output_dir=>\"/home/mypath/\", :process_hash=>\"8b9d9c51\", :type=>\"pdf\", :processed_dir=>\"/513/9a1/88a\", :pdf=>\"/system/path/a3ae1194f76d737b6cfb141fa0fde17f78f2e94e.pdf\", :slides_count=>4, :meta=>{:swfs=>\"{/system/path/88a/8b9d9c51[*,0].swf,4}\", :pngs=>\"/system/path/8b9d9c51{page}.png\", :json=>\"/system/path/8b9d9c51.js\"}}"

在我的代码中我有

JSON.parse(PARAMS [:附件])

这会引发错误

  

JSON :: ParserError(757:'{:output_dir =>“/ home / path”处的意外令牌,:process_hash =>“8b9d9c51”,:type =>“pdf”,:processed_dir => “/ 513 / 9a1 / 88a”,:pdf =>“/ system / path / a3ae1194f76d737b6cfb141fa0fde17f78f2e94e.pdf”,:slides_count => 4,:meta => {:swfs =>“{/ system / path / 8b9d9c51 [*,0] .swf,4}“,:pngs =>”/ system / path / 8b9d9c51 {page} .png“,:json =>”/ system / path / 8b9d9c51.js“}}' ):

建议我如何解决此问题。

1 个答案:

答案 0 :(得分:2)

JSON.parse将JSON格式的String解析为Hash,而不是相反。我不确定你想要完成什么?

如果您尝试将Hash转换为JSON(字符串),则可以使用

  

PARAMS [:附件] .to_json

如果您尝试将JSON(字符串)转换为Hash,则可以使用

  

JSON.parse(PARAMS [:附件])

但是,您的字符串看起来不像JSON(它包含=>,它应该有:

有效JSON如下:

{ "attachment": { "output_dir": "/home/mypath", "process_hash": "89r2432" } }