【发布时间】:2017-05-28 07:10:06
【问题描述】:
我有一个调用 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}"]
这真是令人讨厌,但至少我认为我可以解析它。会持续更新,感谢cmets的人!
【问题讨论】:
-
你能粘贴代码来解释你如何解析 api 响应吗?
-
这取决于它是如何被解析的。 HWIA 和普通哈希之间是有区别的,例如,
response['numPages']如果不是 HWIA 应该可以工作。
标签: ruby-on-rails api hash