ruby - 来自嵌套哈希的对象取决于键值

标签 ruby

我收到一个 google api 响应并有以下哈希值:

api_response = {"0"=>{"id"=>"xxx.id.google.com^xxx", "hasMicrophone"=>"true", "hasCamera"=>"true", "hasAppEnabled"=>"false", "isBroadcaster"=>"false", "isInBroadcast"=>"true", "displayIndex"=>"0", "person"=>{"id"=>"xxx", "displayName"=>"Foo Bar", "image"=>{"url"=>".../s96-c/photo.jpg"}, "fa"=>"false"}, "locale"=>"en", "fa"=>"false"}, "1"=>{"id"=>"xxx.id.google.com^3772edb7c0", "hasMicrophone"=>"true", "hasCamera"=>"true", "hasAppEnabled"=>"false", "isBroadcaster"=>"false", "isInBroadcast"=>"true", "displayIndex"=>"1", "person"=>{"id"=>"xxx", "displayName"=>"Bar Foo", "image"=>{"url"=>".../s96-c/photo.jpg"}, "fa"=>"false"}, "locale"=>"en", "fa"=>"false"}, "2"=>{"id"=>"xxx.id.google.com^98ebb1f610", "hasMicrophone"=>"true", "hasCamera"=>"true", "hasAppEnabled"=>"true", "isBroadcaster"=>"true", "isInBroadcast"=>"true", "displayIndex"=>"2", "person"=>{"id"=>"xxx", "displayName"=>"John Doe", "image"=>{"url"=>".../s96-c/photo.jpg"}, "fa"=>"false"}, "locale"=>"en", "fa"=>"false"}}

我需要从 "isBroadcaster"=>"true" 的嵌套散列中获取 displayName 的值。 (在这种情况下,displayNameJohn Doe)。我只是无法解决这个问题,希望得到一些帮助。提前谢谢你。

最佳答案

假设只有 1 个广播公司。

api_response.each do |_, hash|
  break hash['person']['displayName'] if hash['isBroadcaster'] == 'true'
end

对于多个广播公司,这:

api_response.each_with_object([]) do |(_, hash), array|
  array << hash['person']['displayName'] if hash['isBroadcaster'] == 'true'
end

关于ruby - 来自嵌套哈希的对象取决于键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29019041/

相关文章:

ruby - 打印我比。在 Ruby 中打印“#{i}?不将它添加到字符串中是否有区别?

ruby - ruby rspec 的参数数量错误

ruby - Capistrano 中的符号字符串连接

ruby-on-rails - 将父值传递给简单形式

ruby - 将元数据添加到 PDF

Ruby:将可变数量的参数(包括可选 block )转发到不同的函数

ruby - Ruby自制服务器解析POST请求体

ruby - 初学者 RSpec : Need help writing Ruby code to pass RSpec tests (Silly Blocks exercise)

ruby - 如何正确国际化 Sinatra 页面?

ruby-on-rails - `rescue_from` 格式为json时异常