Second simplest json parser in the universeより。
require 'pp'
json =<<'ENDOFJSON'
{
"type": "menu",
"value": "File",
"items": [
{"value": "New", "action": "CreateNewDoc"},
{"value": "Open", "action": "OpenDoc"},
{"value": "Close", "action": "CloseDoc"}
]
}
ENDOFJSON
print json, "\n"
null=nil
jsonobj = eval(json.gsub(/(["'])\s*:\s*(['"0-9tfn\[{])/){"#{$1}=>#{$2}"})
pp jsonobj
をrubyに通すと以下の出力がとりあえず得られる。
% ruby ./json.rb
{
"type": "menu",
"value": "File",
"items": [
{"value": "New", "action": "CreateNewDoc"},
{"value": "Open", "action": "OpenDoc"},
{"value": "Close", "action": "CloseDoc"}
]
}
{"items"=>
[{"action"=>"CreateNewDoc", "value"=>"New"},
{"action"=>"OpenDoc", "value"=>"Open"},
{"action"=>"CloseDoc", "value"=>"Close"}],
"type"=>"menu",
"value"=>"File"}
rubyのsyntaxに文字列操作で変換して、evalしてるだけなんだけど、2行で書けるなんて思わなかったなぁ。と感心した。
それはそれとして、標準的に使われているjsonのライブラリってなんだろう?みんなactive_support使ってるのかな?