如何以正确的格式写入JSON文件

我正在Ruby中创build一个哈希,并想以正确的格式将其写入JSON文件

这是我的代码:

tempHash = { "key_a" => "val_a", "key_b" => "val_b" } fJson = File.open("public/temp.json","w") fJson.write(tempHash) fJson.close 

这里是结果文件的内容:

 key_aval_akey_bval_b 

我正在使用Sinatra(不知道是什么版本)和Ruby v 1.8.7。

我怎样才能以正确的JSON格式将其写入文件?

4 Solutions collect form web for “如何以正确的格式写入JSON文件”

需要JSON库,并使用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 

你的temp.json文件现在看起来像这样:

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

格式化

 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 

产量

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

为了使这个工作在Ubuntu Linux上:

  1. 我安装了Ubuntu软件包ruby-json:

     apt-get install ruby-json 
  2. 我在${HOME}/rubybin/jsonDEMO编写脚本

  3. 包括$HOME/.bashrc

     ${HOME}/rubybin:${PATH} 

(在这种情况下,我也在bash命令行中input了上面的内容)

然后,当我进入命令行时,它工作:

 jsonDemo 

这个问题是为ruby1.8,但它仍然在谷歌search顶部。

在1.9以上的ruby,你可以使用

 File.write("public/temp.json",tempHash.to_json) 

在ruby1.8,你也可以使用一个class轮的forms

 File.open("public/temp.json","w"){ |f| f.write tempHash.to_json } 
  • 轨3,如何添加一个视图,不使用相同的布局作为rest的应用程序?
  • 如何dynamic获取方法的源代码,以及该方法所在的文件
  • 我如何在Ruby中初始化模块的实例variables?
  • 在Ruby中枚举
  • Rails Modelfind哪里不对等
  • 我如何在Mac OS X Lion中安装Ruby 1.9.3?
  • Rails 2:当id 1不存在时,Model.find(1)给出ActiveRecord错误
  • 从Ruby学习Python; 异同
  • 生成所有字母和数字的数组
  • Rails .where和.find
  • 如何在Ruby中以毫秒为单位获得stream逝的时间?