我正在开发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“}}' ):
建议我如何解决此问题。
答案 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" } }