我有一个 json 文件数组。这是单个 json 文件的示例,
{
"job": [
"admin",
"developer"
],
"name": "dave"
}
如果管理员存在于“工作”中,我需要获取“名称”值。需要对数组中的其他 json 文件执行相同的操作。
帮助将不胜感激。
我有一个 json 文件数组。这是单个 json 文件的示例,
{
"job": [
"admin",
"developer"
],
"name": "dave"
}
如果管理员存在于“工作”中,我需要获取“名称”值。需要对数组中的其他 json 文件执行相同的操作。
帮助将不胜感激。
我假设如果hash["job"]
存在它是一个数组。
require 'json'
str = '{ "job": [ "admin", "developer" ], "name": "dave"}'
hash = JSON::parse(str)
# => {"job"=>["admin", "developer"], "name"=>"dave"}
name = hash["name"] if hash["job"] && hash["job"].include?("admin")
# => "dave"
使用文件处理读取 json 文件以进行哈希处理。
1)您需要在 JSON 解析之前需要 JSON。
require 'json'
如果上述步骤返回 false,那么您的机器上可能没有安装 json gem。使用以下命令安装 JSON gem。
gem install json
2) 打开 JSON 文件进行解析:创建文件句柄来解析 JSON 文件。
file = File.read('file-name-to-be-read.json')
上述命令将以读取模式打开文件。
3) 现在解析文件中的数据。
data_hash = JSON.parse(file)
上面的命令将使用名称为“file”的文件句柄解析文件中的数据,变量 data_hash 将从文件中解析散列。
4)现在,如果我们以问题中提到的例子为例。
{
"job": [
"admin",
"developer"
],
"name": "dave"
}
require 'json'
file = File.read('file-name-to-be-read.json')
data_hash = JSON.parse(file)
data_hash 将包含{"job"=>["admin", "developer"], "name"=>"dave"}
现在,来自上述哈希的键“job”由一个包含 ["admin","developer"] 的数组组成。如果作业是“admin”,您可以使用以下三元命令找出名称。
data_hash["job"].select{|x| x == 'admin'}.any? ? data_select["name"] : "not found"
任何?检查作业,如果它是“管理员”,那么它将提供名称。