2017-01-13 3 views
0

Ich habe eine Hilfsmethode, die eine API aufruft. Die API konvertiert eine Textdatei in eine PDF-Datei und antwortet mit dem ursprünglichen Dateipfad, dem neuen Dateipfad und der Anzahl der Seiten. Die Antwort des api sieht wie folgt aus:Wie Hash-Werte korrekt analysieren?

response[:numPages] 
response[:previewPath] 

aber wenn ich versuche, den Hash auf diese Weise zu analysieren:

response = {"originalPath":"FILE_PATH", "previewPath":"DIFFERENT_PATH", "numPages":1} 

Von meinem Verständnis, ich sollte die Schlüsselwerte zuzugreifen, wie diese in der Lage sein, , Bekomme ich einen TypeError (keine implizite Umwandlung von Symbol in Integer). Ich bin ziemlich überrascht von dieser Antwort, irgendwelche Gedanken?

EDIT

Dies wurde vor für mich tatsächlich arbeitet, und ich war die Antwort wie diese Analyse:

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 

Wie gesagt, dies vor für mich gearbeitet, aber jetzt, wenn ich, dass das Rück zurück zum rufenden Controller, meine Antwort lautet:

Sehr verwirrt von diesem.

EDIT

Jetzt habe ich die oben geändert wie folgt aussehen:

response << res.body 

die wie folgt aussieht:

["{\"originalPath\":\"L:\\\\MailFiles\\\\Originals\\\\file.plain\",\"previewPath\":\"L:\\\\MailFiles\\\\PDF\\\\sub_order_110986.pdf\",\"numPages\":1}"] 

Welche widerlich wie die Hölle ist, aber zumindest Ich denke, ich kann das analysieren. Wir werden weiter updaten, danke für die Kommentare der Leute!

+0

Können Sie Code für die Analyse der API-Antwort einfügen? –

+1

Es hängt davon ab, wie es analysiert wird. Es gibt einen Unterschied zwischen einem HWIA und einem einfachen Hash, z. B. "Antwort ['numPages']" sollte funktionieren, wenn es kein HWIA ist. –

Antwort

0

Der Code, der Arbeits endete, ist dies:

res = [] 
res << response.body.split(/numPages":(\d)/)[1] 
res = res[0].to_i 

Es ist wahrscheinlich eine große Refactoring dieser, wenn jemand mehr Erfahrung will, dass ich das Licht zeigen, aber das funktioniert jetzt! Nochmals vielen Dank für die Kommentare und die Antwort.

Verwandte Themen