首页 > 解决方案 > 我们可以使用 Ruby on Rails 在同一级别挖掘多个值吗?

问题描述

我用这样的响应调用了一个 API

{
   "data": {
       "name": "joe",
       "placeofbirth": "canada",
       "address": [],
   }
}

我想获取 and 的值name并将placeofbirth其放入一个新对象中,所以它会是这样的

{
   "name": "Joe",
   "placeofbirth": "canada"
}

我试图使用它,response.dig("data", "name", "placeofbirth")但它返回错误。如果我只选择一个这样的字段,response.dig("data", "name")否则response.dig("data", "placeofbirth")我会得到结果。是否无法使用 选择多个值dig?如果不可能,还有其他解决方案可以达到我的预期结果吗?

标签: ruby-on-railsruby

解决方案


dig做它所说的,它挖掘单个值的散列,你发送它的值,可以说data->name是方法进入散列的路径。

您可以将其与slice方法和安全导航运算符结合使用。

response.dig("data")&.slice("name", "placeofbirth")
# => { "name": "joe", "placeofbirth": "canada" }

dig如果您只深入一层,则没有理由使用,因此您可以简单地使用

response["data"]&.slice("name", "placeofbirth")
# => { "name": "joe", "placeofbirth": "canada" }

推荐阅读