你想JSON.parse
或JSON.load
:
def load_user_lib(filename)
JSON.parse(IO.read(filename))
end
这里的关键是使用IO.read
作为一个简单的方法来从磁盘加载JSON字符串,使其可以被解析。或者,如果你在你的文件UTF-8的数据:
my_object = JSON.parse(IO.read(filename, encoding:'utf-8'))
我已经连接到上面的JSON文件,所以你应该去阅读了解更多详情。但总结:
json = my_object.to_json
- 与特定对象的方法来创建一个JSON字符串。
json = JSON.generate(my_object)
- 从对象创建JSON字符串。
JSON.dump(my_object, someIO)
- 创建JSON字符串并写入文件。
my_object = JSON.parse(json)
- 从JSON字符串创建一个Ruby对象。
my_object = JSON.load(someIO)
- 从文件创建一个Ruby对象。
或者:
def load_user_lib(filename)
File.open(filename, "r") do |f|
JSON.load(f)
end
end
注:我已经对应于你的 “驼峰” saveUserLib
,因为这是Ruby约定的方法使用的 “snake_case” 的名字。
小代码批评:你不应该将文件路径硬编码到你的方法中。你应该让你的方法接受一个文件路径,或者把一个常量放在你的文件的顶部并且使用路径。经验法则(总是有例外):如果您在方法中硬编码一个数字(除1以外)或面向用户的字符串,则会使代码变得更加脆弱并且难以维护。 – Phrogz 2012-01-29 17:57:17
当我删除我的'''''我得到以下错误:'':未定义的局部变量或方法'user_lib'为主:对象(NameError) –
beoliver
2012-01-29 18:07:58
但关于路径 - 我知道 - 但它是快速测试!谢谢你的抬头虽然 – beoliver 2012-01-29 18:10:17