Je crée un hachage dans Ruby et je souhaite l'écrire dans un fichier JSON, au format correct.
Voici mon code:
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
Et voici le contenu du fichier résultant:
key_aval_akey_bval_b
J'utilise Sinatra (je ne sais pas quelle version) et Ruby v 1.8.7.
Comment puis-je écrire ceci dans le fichier au format JSON correct?
Réponses:
Exigez la bibliothèque JSON et utilisez
to_json
.Votre fichier temp.json ressemble maintenant à:
la source
File.open(...){ |f| f << h.to_json }
JSON.pretty_generate(tempHash)
est aussi rad ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/…Avec formatage
Production
la source
pretty_generate
, à moins que le consommateur de la sortie soit un humain. Même dans ce cas, il est préférable de générer des lignes JSON et d'utiliser quelque chose commejq
pour voir la sortie.Cette question est pour ruby 1.8, mais elle arrive toujours en tête lors de la recherche sur Google.
en rubis> = 1,9, vous pouvez utiliser
autre que ce qui est mentionné dans d'autres réponses, dans ruby 1.8, vous pouvez également utiliser une forme de doublure
la source
Pour que cela fonctionne sur Ubuntu Linux:
J'ai installé le package Ubuntu ruby-json:
J'ai écrit le script en
${HOME}/rubybin/jsonDEMO
$HOME/.bashrc
inclus:(À cette occasion, j'ai également tapé ce qui précède sur la ligne de commande bash.)
Ensuite, cela a fonctionné lorsque je suis entré sur la ligne de commande:
la source