Ruby - 意外的哈希数据结构

时间:2015-06-01 11:28:33

标签: ruby-on-rails arrays ruby

一个简单的问题:

在rails中我得到像这样的哈希响应:

{"success":true,"new_id":816704027}

所以,我认为与普通结构的区别是 - “new_id”: - 而不是new_id:

有谁知道如何检索标记为“new_id”的数据? 通常的数组[“new_id”]不起作用。

对代码的回应:

new_customer_id = @response.body
puts new_customer_id
puts new_customer_id["new_id"]

简单地说:

=> {"success":true,"new_id":816704028}
=> new_id

我来自JSON_response的实现。无论如何,他们改变了应用程序,我不再拥有JSON消息,但他们使用的方法是:

return_200(additional_items: {:new_id => "@customer.id"} )

更多:

如果我写:

new_customer_id = @response.body
puts new_customer_id
puts new_customer_id[:new_id]

打印的答案很简单:

=> {"success":true,"new_id":816704028}

并且不会收到对:new_id内容的请求。

更有趣的是以下内容: 事实之后:

puts new_customer_id["new_id"]

打印:

=> new_id

如果我写:

puts new_customer_id["new_id"][0]
puts new_customer_id["new_id"][1]
puts new_customer_id["new_id"][2]
...

我获得:

=> n
=> e
=> w
...

此外:

如果我写:

puts new_customer_id["new_"]
puts new_customer_id["new_i"]

我获得:

=> new_
=> new_i

如果我写:

puts new_customer_id["new_id_anyOtherCharacter"]

我什么都没得到

卢卡

3 个答案:

答案 0 :(得分:2)

这不是你要回来的红宝石对象。这是JSON。您可以通过多种方式获取new_id:

JSON.parse(@response.body)["new_id"]

JSON.parse(@response.body).symbolize_keys[:new_id]

JSON.parse(@response.body).with_indifferent_access[:new_id]

答案 1 :(得分:0)

使用params获得如下值:

new_id= array[:new_id]

答案 2 :(得分:0)

我打赌哈希有一个符号键而不是一个字符串键。试试array[:new_id]