Bạn muốn JSON.parse
hoặc JSON.load
:
def load_user_lib(filename)
JSON.parse(IO.read(filename))
end
Mấu chốt ở đây là sử dụng IO.read
như là một cách đơn giản để nạp chuỗi JSON từ đĩa, do đó nó có thể được phân tích cú pháp. Hoặc, nếu bạn có dữ liệu UTF-8 trong tệp của mình:
my_object = JSON.parse(IO.read(filename, encoding:'utf-8'))
Tôi đã liên kết với tài liệu JSON ở trên, vì vậy bạn nên đọc để biết thêm chi tiết. Nhưng tóm lại:
json = my_object.to_json
- phương pháp trên đối tượng cụ thể để tạo chuỗi JSON.
json = JSON.generate(my_object)
- tạo chuỗi JSON từ đối tượng.
JSON.dump(my_object, someIO)
- tạo chuỗi JSON và ghi vào một tệp.
my_object = JSON.parse(json)
- tạo đối tượng Ruby từ chuỗi JSON.
my_object = JSON.load(someIO)
- tạo đối tượng Ruby từ tệp.
Hoặc:
def load_user_lib(filename)
File.open(filename, "r") do |f|
JSON.load(f)
end
end
Lưu ý: Tôi đã sử dụng một "snake_case" tên cho phương pháp tương ứng với "camelCase" của bạn saveUserLib
vì đây là ước Ruby.
Phê bình mã nhỏ: bạn không nên mã hóa đường dẫn tệp vào phương thức của mình. Bạn nên hoặc có phương pháp của bạn chấp nhận một đường dẫn tập tin, hoặc đặt một hằng số ở đầu tệp của bạn với đường dẫn để sử dụng. Quy tắc ngón tay cái (luôn có ngoại lệ): nếu bạn đã từng mã hóa một số (có lẽ là 1) hoặc chuỗi người dùng phải đối mặt bên trong một phương pháp, bạn đang làm cho mã của bạn trở nên mong manh và khó bảo trì hơn. – Phrogz
khi tôi xóa '$' 'của mình, tôi nhận được lỗi sau: '': biến cục bộ hoặc phương thức' user_lib 'cho chính: Object (NameError) –
beoliver
nhưng về đường dẫn - điều này tôi biết - nhưng nó là dành cho một bài kiểm tra nhanh! cảm ơn cho những người đứng đầu mặc dù – beoliver