Ruby - разбирать массив файлов json

У меня есть массив файлов JSON. Это образец одного файла JSON,

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

}

Мне нужно получить значение "имя", если администратор существует в "вакансии". Необходимо сделать то же самое для других файлов JSON в массиве.

Помощь будет оценена.

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"

Прочитайте файл json для хэширования с помощью File Handling.

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"

любой? проверяет работу, если это "администратор", то она предоставит имя.

Другие вопросы по тегам