133 votes

écriture de fichier json dans le format correct - Ruby

Je suis entrain de créer un hachage, en Ruby. Je veux écrire dans un fichier json, dans le 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:

key_aval_akey_bval_b

Comment puis-je écrire cela pour le fichier dans le bon format JSON? Je suis l'aide de Sinatra (je ne sais pas quelle version) et la version de Ruby "1.8.7" Merci!

198voto

Mike Lewis Points 29305

Exiger que le JSON de la bibliothèque, et d'utiliser to_json.

require 'json'
tempHash = {
    "key_a" => "val_a",
    "key_b" => "val_b"
}
File.open("public/temp.json","w") do |f|
  f.write(tempHash.to_json)
end

Votre temp.fichier json ressemble maintenant à:

{"key_a":"val_a","key_b":"val_b"}

105voto

Anders B Points 534

Avec mise en forme

require 'json'
tempHash = {
    "key_a" => "val_a",
    "key_b" => "val_b"
}
File.open("public/temp.json","w") do |f|
  f.write(JSON.pretty_generate(tempHash))
end

Sortie

{
    "key_a":"val_a",
    "key_b":"val_b"
}

3voto

daggett Points 21

Pour faire ce travail sur Ubuntu Linux:

  1. J'ai installé le paquet Ubuntu ruby-json:

    apt-get install ruby-json
    
  2. J'ai écrit le script en ${HOME}/rubybin/jsonDEMO

  3. $HOME/.bashrc inclus:

    ${HOME}/rubybin:${PATH}
    

(À cette occasion, j'ai aussi tapé le dessus de la ligne de commande bash.)

Puis il a travaillé quand je suis entré sur la ligne de commande:

jsonDemo

0voto

Charlie Martin Points 62306

Jetez un oeil à cette SORTE de réponse: Comment faire Ruby sérialisation d'un objet à l'aide de JSON

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X