2017-02-10 20 views
1

У меня есть файл в формате JSON, состоящий из имен ботов и их параметров и конфигураций, и это выглядит следующим образом:JSON файла Руби Hash

{ 
    "csv-collector": { 
     "parameters": { 
      "delete_file": false, 
      "feed": "FileCollector", 
      "provider": "ola", 
      "path": "/tmp/", 
      "postfix": ".csv", 
      "rate_limit": 300 
     }, 
     "group": "Collector", 
     "name": "Fileinput", 
     "module": "abc", 
     "description": "Fileinput collector fetches data from a file." 
    }, 
    "csv-parser": { 
     "parameters": { 
      "columns": "classification.type,destination.ip", 
      "default_url_protocol": "http://", 
      "delimiter": ",", 
      "skip_header": true, 
      "type": "c&c" 
     }, 
     "group": "Parser", 
     "name": "Generic CSV", 
     "module": "efg", 
     "description": "Generic CSV Parser is a generic bot" 
    } 
} 

И я хотел бы разобрать его на Руби Hash с именами бот «csv-collector» и «csv-parser» в качестве ключей и остальной части содержимого в качестве значений. Что-то вроде этого:

my_hash = {"csv-collector" => {"parameters": { 
       "delete_file": false, 
       "feed": "FileCollector", 
       "provider": "ola", 
       "path": "/tmp/", 
       "postfix": ".csv", 
       "rate_limit": 300 
      }, 
      "group": "Collector", 
      "name": "Fileinput", 
      "module": "abc", 
      "description": "Fileinput collector fetches data from a file." 
      } 
     } 

У меня есть несколько ботов, так что это должно быть справедливо и для других.

У меня уже есть следующий код:

require "json" 

def read_file 
    temp = Hash.new 
    file = JSON.parse(File.read('mybotsfile.conf')) 
    file.each { |bot| temp << bot} 
    puts temp 
end 

Но дает мне следующее сообщение об ошибке:

`undefined method `<<' for {}:Hash (NoMethodErr`or) 

Я новичок в Ruby, и я не очень хорошо, как разобрать не знаю файл JSON для рубинового хэша

ответ

5
require 'json' 
file = File.read('your-json-file.json') 
result_hash = JSON.parse(file) 
Смежные вопросы