如何以json的形式读取/写入对象集合

时间:2016-01-16 03:30:03

标签: ruby json

我有一组User类要保存为json文件。

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

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

问题是用户没有被JSON限制,它保存到文件中:

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

另外,我如何将这个json文件读回一个集合?

2 个答案:

答案 0 :(得分:1)

问题是,您的用户变量仍然是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

答案 1 :(得分:0)

如其他答案中所述,您可以使用users.to_json将对象转换为json字符串。

要将此json文件读回对象,您可以从文件中读取字符串并使用JSON.parse(str),其中str是读取的字符串。这将返回用户对象的集合作为哈希。