0

次のJSONがRubyRestClientのPOSTリクエストに返されます。

{"importResults":[{"status":"success","id":"ed2a89538d84eff5b92b5baad1fb5a4e"}]}

ステータス(成功)とID(ed2a89538d84eff5b92b5baad1fb5a4e)を取得しようとしています。

次のコードを試しました。

jdoc = JSON.parse(jsonAbove)
status = jdoc.fetch("importResults").fetch("status")

これは私にエラーを返していますTypeError: can't convert String into Integer

このエラーが発生するのは、応答に配列があるためですが、正しく取得できないようです。

4

4 に答える 4

4

他の多くの人がすでに言っているように、あなたfirstはあなたの要求に必要です。

status = jdoc.fetch("importResults").first.fetch("status")

あなたはこれに慣れていないようです。irbを使って物事をいじくりまわすことをお勧めします。たとえば、入力s = jdoc.fetch("importResults")して結果を確認できます。次にs、コンソールで変数を試して、何が機能するかを確認できます。 s.first、、s.classなどs[0]

于 2012-05-18T16:51:12.080 に答える
3

そうです、それは配列です。最初の(または別の適切な)要素を取得して続行します。

status = jdoc.fetch("importResults").first.fetch("status")
#                                      ^^
于 2012-05-18T16:50:14.833 に答える
3

これは、配列から最初のアイテムを取得する必要があるためです。これを変える:

status = jdoc["importResults"].first["status"]

または:

status = jdoc["importResults"][0]["status"]
于 2012-05-18T16:51:07.203 に答える
3

あなたが必要です

status = jdoc.fetch("importResults").first.fetch("status")
于 2012-05-18T16:51:16.430 に答える