usted quiere JSON.parse
o JSON.load
:
def load_user_lib(filename)
JSON.parse(IO.read(filename))
end
La clave aquí es utilizar IO.read
como una forma sencilla para cargar la cadena JSON desde el disco, de modo que puede ser analizado O bien, si tiene datos UTF-8 en su archivo:
my_object = JSON.parse(IO.read(filename, encoding:'utf-8'))
me he vinculado a la documentación JSON anterior, por lo que debería ir a leer que para más detalles. Pero en resumen:
json = my_object.to_json
- método sobre el objeto específico para crear una cadena JSON.
json = JSON.generate(my_object)
- crea cadena JSON del objeto.
JSON.dump(my_object, someIO)
- crea una cadena JSON y escribe en un archivo.
my_object = JSON.parse(json)
- crea un objeto Ruby a partir de una cadena JSON.
my_object = JSON.load(someIO)
- crea un objeto Ruby desde un archivo.
alternativa:
def load_user_lib(filename)
File.open(filename, "r") do |f|
JSON.load(f)
end
end
Nota: He utilizado un nombre "snake_case" para el método correspondiente a su "camelCase" saveUserLib
ya que esta es la convención de Ruby.
Pequeña crítica de código: no debe codificar la ruta del archivo en su método. Debería hacer que su método acepte una ruta de archivo, o poner una constante en la parte superior de su archivo con la ruta de acceso a usar. Regla de oro (siempre hay excepciones): si alguna vez codificas un número (que no sea quizás 1) o una cadena de usuario dentro de un método, estás haciendo que tu código sea más frágil y más difícil de mantener. – Phrogz
cuando elimino mis '$' s obtengo el siguiente error: ' ': variable local indefinida o método' user_lib' para main: Object (NameError) –
beoliver
pero sobre la ruta, esto lo sé, pero fue por una prueba rápida! gracias por la atención aunque – beoliver