Hatena::Groupsubtech

#生存戦略 、それは

-> 09 { 09 / 18 }

ruby の json ライブラリで、綺麗にインデントして出力

19:04 | はてなブックマーク - 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^)/。。。

トラックバック - http://subtech.g.hatena.ne.jp/secondlife/20090918