2016-01-16 5 views
0

У меня есть набор классов пользователей, которые я хочу сохранить как json-файл.Как читать/писать коллекцию объектов как json

users = [] 
users << User.new('john', 'smith', 55) 

File.open("users.json", "w") do |f| 
    f.write(JSON.pretty_generate(users) 
end 

Проблема заключается в том, Пользователь не является JSON'ified, он сохраняет в файл, как:

[ 
    "#<User:0x000000101010eff40>", 
    .. 
] 

Кроме того, как я буду читать эту JSon файл обратно в коллекцию?

ответ

1

Проблема в том, что ваша переменная users по-прежнему представляет собой массив объектов ActiveRecord. Вам нужно преобразовать их в json.

users = [] 
users << User.new('john', 'smith', 55) 

File.open("users.json", "w") do |f| 
    f.write(JSON.pretty_generate(users.to_json) 
end 
+0

Это не сработало, я удалил JSON.pretty_generate, и я все еще вижу «# <Пользователь: 0x000000101010eff40>» в моем json-файле. (довольно печатная работа тоже не работала) – Blankman

0

Как уже упоминалось в другой ответ, вы можете использовать users.to_json для преобразования объекта в JSON строку.

Чтобы прочитать этот json-файл на объект, вы можете прочитать строку из файла и использовать JSON.parse(str), где str - это строка, которую вы читаете. Это вернет вам коллекцию объекта пользователя как хэш.

Смежные вопросы