2017-01-13 13 views
0

私は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 

、おそらくこの偉大なリファクタリングありますが、これは今の作品:

+0

apiレスポンスの構文解析コードを貼り付けることはできますか? –

+1

それはどのように解析されているかによって異なります。 HWIAとHashとの間には違いがあります。例えば、 'response ['numPages']'はHWIAでない場合に動作します。 –

答えて

0

作業を終わったコードはこれです!コメントと回答に感謝します。

関連する問題