我只需要提取'管理员'从这个Json使用Ruby:
JSON -
{
"Roles":[
{
"admins":[
"me"
],
"role":"cleanup"
},
{
"admins":[
"tester"
],
"role":"create a mess"
},
]
}
RUBY -
require 'json'
file = File.read('adminlist_Feb_2017.json')
thismonthlist=JSON.parse(file)
puts thismonthlist['admins']
输出 - 这给了我一个空白输出但是如果我将最后一行更改为: 把这个单一列表['角色']
它给了我一切。我只想要管理员名单。答案 0 :(得分:1)
尝试这样的事情
thismonthlist[:Roles].flat_map { |role| role[:admins] }
=> ["me", "tester"]
答案 1 :(得分:0)
admins = []
File.open('adminlist_Feb_2017.json', 'r') do |file|
json = JSON.parse(file.read)
admins = json["Roles"].flat_map{|role| role["admins"]}.uniq
end
admins
# => ["me", "tester"]
我打开文件并在一个区块中处理它以确保它在结束时关闭。在块中,我读取文件内容并将json字符串解析为哈希。然后我通过"角色"哈希,抓住"管理员"数组并将其作为一个数组返回Enumerable#flat_map。在我使用Enumerable#uniq仅返回每个管理员一次之后。