我将以下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
。
我知道这是因为响应中有一个数组,我收到了这个错误,但我似乎无法做到这一点。
答案 0 :(得分:4)
正如许多其他人已经说过的那样,您的请求中需要first
。
status = jdoc.fetch("importResults").first.fetch("status")
看起来你是新手。我建议使用irb搞乱事情。例如,您可以键入s = jdoc.fetch("importResults")
并查看结果。然后,您可以在控制台中使用s
变量,看看哪些有效。 s.first
,s.class
,s[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")