如何使用dig方法获取嵌套属性

用户名

我正在尝试从嵌套属性中获取属性值,但它什么也不返回。

运行时log.info record['metadata'],得到以下输出:

bang_1            | 2020-01-20 16:47:28 +0000 [info]: #0  body_size="16" collector_ip="172.22.0.1" collector_timestamp=1579538848944 name="default" version="1.0.0"

所以我跑去log.info record.dig('metadata').class检查课:

bang_1            | 2020-01-20 16:47:28 +0000 [info]: #0 Hash

我如何获得财产的价值name我正在尝试执行以下代码,但是得到了NilClass

log.info record.dig('metadata', 'name')
log.info record.dig('metadata', 'name').class
record = {
  'xx': 1
}
record['metadata'] = {
  'name': 'default'  
}

puts record
puts record['metadata']

# {:xx=>1, "metadata"=>{:name=>"default"}}
#.{:name=>"default"}
斯派克曼

在这些行中

record['metadata'] = {
  'name': 'default'  
}

语法使用符号键(而不是字符串键'name':存储值因此,您需要像这样读取该值:'default':namename

record.dig('metadata', :name)

如果要避免使用符号键,则可以在创建哈希时使用其他哈希语法:

record['metadata'] = {
  'name' => 'default'  
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章