我有一个调用api的辅助方法。 api将文本文件转换为pdf,并以原始文件路径,新文件路径和页数进行响应。 api的反应如下:
response = {"originalPath":"FILE_PATH", "previewPath":"DIFFERENT_PATH", "numPages":1}
根据我的理解,我应该能够访问这样的键值:
response[:numPages]
response[:previewPath]
但是,当我尝试以这种方式解析哈希时,我得到一个TypeError(没有将Symbol隐式转换为Integer)。我对这种反应感到非常难过,有什么想法吗?
修改
这实际上对我有用,我正在解析这样的响应:
res = RestClient.post(uri.join,
{
:file => File.new(file_path, 'rb')
})
response = []
response << res.split(/>(\d)</)[1]
response << res.split(/<previewPath>(L:\\MailFiles\\PDF\\sub_order_\d*\.pdf)/)[1]
response
正如我所说,这对我来说很有用,但现在当我把它还给回调控制器时,我的回答是:
[nil, nil]
非常困惑。
修改
现在,我已将上述内容更改为:
response << res.body
看起来像这样:
["{\"originalPath\":\"L:\\\\MailFiles\\\\Originals\\\\file.plain\",\"previewPath\":\"L:\\\\MailFiles\\\\PDF\\\\sub_order_110986.pdf\",\"numPages\":1}"]
哪个是令人讨厌的地狱,但至少我认为我可以解析它。将继续更新,感谢评论人员!
答案 0 :(得分:0)
最终工作的代码是:
res = []
res << response.body.split(/numPages":(\d)/)[1]
res = res[0].to_i
如果有更多有经验的人希望向我展示光明,那么这可能是一个很好的重构,但现在这个有效!再次感谢您的评论和回答。