私はapiを呼び出すヘルパーメソッドを持っています。 apiはテキストファイルをpdfに変換し、元のファイルパス、新しいファイルパス、およびページ数で応答します。 APIからの応答は次のようになります。私はハッシュをこのように解析しようとすると、しかしハッシュ値を正しく解析する方法は?
response[:numPages]
response[:previewPath]
:私の理解から
response = {"originalPath":"FILE_PATH", "previewPath":"DIFFERENT_PATH", "numPages":1}
、私はこのようなキーの値にアクセスすることができるはずですTypeError(シンボルをIntegerに暗黙的に変換しない)を取得します。私はこの応答、任意の思考にかなり困惑していますか?
EDIT
これは実際には前に私のために働いていた、と私はこのような応答を解析した
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]
このことにより、非常に混乱して。
EDIT今
は、私はこのように見える以上を変更した。このようになります
response << res.body
:地獄のように嫌です
["{\"originalPath\":\"L:\\\\MailFiles\\\\Originals\\\\file.plain\",\"previewPath\":\"L:\\\\MailFiles\\\\PDF\\\\sub_order_110986.pdf\",\"numPages\":1}"]
が、少なくとも、私はそれを解析できると思う。コメントの人々に感謝、更新を維持します!より多くの経験を積んだ、誰もが私に光を表示したい場合
res = []
res << response.body.split(/numPages":(\d)/)[1]
res = res[0].to_i
、おそらくこの偉大なリファクタリングありますが、これは今の作品:
apiレスポンスの構文解析コードを貼り付けることはできますか? –
それはどのように解析されているかによって異なります。 HWIAとHashとの間には違いがあります。例えば、 'response ['numPages']'はHWIAでない場合に動作します。 –