0

我将以下 JSON 返回到 Ruby RestClient 发布请求:

{"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.classs[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 回答