Vous voulez JSON.parse
o JSON.load
:
def load_user_lib( filename )
JSON.parse( IO.read(filename) )
end
La clé est d'utiliser IO.read
est un moyen simple de charger la chaîne JSON depuis le disque, afin qu'elle puisse être analysée. Ou, si vous avez des données UTF-8 dans votre fichier :
my_object = JSON.parse( IO.read(filename, encoding:'utf-8') )
J'ai mis un lien vers la documentation JSON ci-dessus, vous devriez donc la lire pour plus de détails. Mais en résumé :
-
json = my_object.to_json
- sur l'objet spécifique pour créer une chaîne JSON.
-
json = JSON.generate(my_object)
- créer une chaîne JSON à partir d'un objet.
-
JSON.dump(my_object, someIO)
- créer une chaîne JSON et l'écrire dans un fichier.
-
my_object = JSON.parse(json)
- créer un objet Ruby à partir d'une chaîne JSON.
-
my_object = JSON.load(someIO)
- créer un objet Ruby à partir d'un fichier.
Alternativement :
def load_user_lib( filename )
File.open( filename, "r" ) do |f|
JSON.load( f )
end
end
Note : J'ai utilisé un nom "snake_case" pour la méthode correspondant à votre "camelCase" saveUserLib
car c'est la convention Ruby.
3 votes
Petite critique sur le code : vous ne devriez pas coder en dur le chemin du fichier dans votre méthode. Vous devez soit faire en sorte que votre méthode accepte un chemin de fichier, soit placer une constante au début de votre fichier avec le chemin à utiliser. Règle générale (il y a toujours des exceptions) : si vous codez en dur un nombre (autre que peut-être 1) ou une chaîne de caractères destinée à l'utilisateur dans une méthode, vous rendez votre code plus fragile et plus difficile à maintenir.
0 votes
Lorsque je retire mon
$
j'obtiens l'erreur suivante :<main>': undefined local variable or method
user_lib' pour main:Object (NameError)1 votes
Mais pour ce qui est du chemin, j'en suis conscient, mais il s'agissait d'un test rapide ! merci de m'avoir prévenu.