Парсим JSON в Ruby

Как работать с JSON в Ruby. Posted on March 6, 2015

Например у нас есть простой JSON файл, и мы ходит сгенерить из него seeds.rb для базы данных в Ruby on Rails.

{
    "objects": [
        {
            "name": "Oris F1",
            "rating": 7
        },
        {
            "name": "Hamilton",
            "rating": 5
        },
        {
            "name": "Longines",
            "rating": 9
        }
    ]
}

Для начала установим пакет json:

$ gem install json

Чтобы получить словарь из данных JSON используем функцию JSON.parse():

#!/usr/bin/ruby

require 'json'

file = File.read(ARGV[0]) # читаем файл, имя файла первый аргумент
json = JSON.parse(file)   # сохраняем в словарь

id_autoinc = 0

# проходим по всем элементам массива, внутри объекта objects
json['objects'].each do |row|

    id_autoinc = id_autoinc + 1

    name = row['name'].inspect
    rating = row['rating']

    puts "Item.create(item_id:#{id_autoinc}, name:#{name}, rating: #{rating})"

end

Не забудем сделать файл выполняемым chmod +x parse.rb.

Для использования скрипта запускаем в консоли и предаем имя файла для обработки:

$ ./parse.rb sample.json # выводим на экран
Item.create(item_id:1, name:"Oris F1", rating: 7)
Item.create(item_id:2, name:"Hamilton", rating: 5)
Item.create(item_id:3, name:"Longines", rating: 9)

$ ./parse.rb sample.json >> seeds.rb # добавляем в файл


ruby json