ruby の json ライブラリで、綺麗にインデントして出力
ruby の json ライブラリで、綺麗にインデントして出力
Ruby のコンストラクタを new と書いてハマった secondlife です。みなさんこんにちは。タイトルママを rubyforge の json でやる方法調べていたのですがめんどくさかった。
- json/ext (拡張ライブラリが通れば標準で利用できる) ではインデントできない
- json/pure つかえばおk
というわけで
require 'rubygems'
require 'json/pure'
obj = {"foo" => ['a'], "bar" => [3], "hogehoge" => (1..10).to_a}
obj["baz"] = obj.dup
obj["baz"]["foobar"] = {'a'=> 1}
res = obj.to_json(
:indent => ' ' * 4,
:object_nl => "\n",
:space => ' '
)
puts res
すると、以下のようにそれなりに綺麗に出力してくれます。ぱちぱちり。
{
"hogehoge": [1,2,3,4,5,6,7,8,9,10],
"baz": {
"hogehoge": [1,2,3,4,5,6,7,8,9,10],
"foobar": {
"a": 1
},
"foo": ["a"],
"bar": [3]
},
"foo": ["a"],
"bar": [3]
}
とかかいたらちょさんに pretty_json つかえばいいんじゃ?といわれました!
puts JSON.pretty_generate([1, 2, {"a"=>3.141}, false, true, nil, 4..10])
こっちの方が断然簡単\(^o^)/。。。