从包含数组的JSON获取数据

时间:2012-05-18 16:48:12

标签: ruby json

我将以下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 个答案:

答案 0 :(得分:4)

正如许多其他人已经说过的那样,您的请求中需要first

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

看起来你是新手。我建议使用irb搞乱事情。例如,您可以键入s = jdoc.fetch("importResults")并查看结果。然后,您可以在控制台中使用s变量,看看哪些有效。 s.firsts.classs[0]等。

答案 1 :(得分:3)

是的,所以它是一个数组。获取其第一个(或其他适当的)元素并继续。

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

答案 2 :(得分:3)

那是因为你需要从数组中获取第一个项目。改变这个:

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

可替换地:

status = jdoc["importResults"][0]["status"]

答案 3 :(得分:3)

你需要

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