-1

我有一个 json 文件数组。这是单个 json 文件的示例,

{
  "job": [
    "admin",
    "developer"
  ],
  "name": "dave"

}

如果管理员存在于“工作”中,我需要获取“名称”值。需要对数组中的其他 json 文件执行相同的操作。

帮助将不胜感激。

4

2 回答 2

2

我假设如果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"
于 2015-12-29T06:06:37.837 回答
1

使用文件处理读取 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"

任何?检查作业,如果它是“管理员”,那么它将提供名称。

于 2015-12-29T09:56:11.120 回答