你想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