WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

Ruby で JSON パーサーを書いてみました

ちょっと RubyJSON データを扱う必要性に迫られまして、パーサークラスを書いてみました。既存のパーサーを使おうかとも思ったのですが、いまいち気に入ったものがなかったのと、今後ちょくちょく使いそうなのでライセンスを気にせず自由に使えるものがほしかったので、新規に書き下ろしました。特徴としては以下のような感じでしょうか。

  • eval などを使わずにまともに解析しているので、堅牢性が高い。
  • こちらのページのスペックをすべて満たしている(つもり)。ユニコードの数値指定(\u????)にも対応。
  • 他のライブラリに依存していないので、簡単に自分のソースに埋め込める。

基本的に自由に使っていただいてかまいません。ライセンスが不明瞭だと使いにくいという場合は、改定 BSD ライセンス、 Ruby ライセンス、 LGPL のいずれかお好きなもので。

そんなわけで、ソースコードはこちら


新バージョンをリリースし、 Snippet としてですが RubyForge で公開しました。最新のソースコードはそちらをご覧ください。

http://rubyforge.org/snippet/detail.php?type=snippet&id=148 (RubyForge)
http://webos-goodies.jp/archives/51071565.html (紹介記事)

混乱を避けるために古いソースは削除しましたので、ご了承ください。一応、 HTML の中にはコメントとして含まれていますので、どうしても見たい方(いないと思いますが^^;)は HTML のソースを表示してみてください。


使い方は、普通にインスタンスを作成して、 parse メソッドに解析したい JSON 文字列を渡せば、解析結果(Hash か Array)が返ります。入力・出力ともに UTF-8 エンコーディングを前提にしているので、適宜変換して渡してください。

例として、以下のコードで del.icio.us のブックマークが取得できます。

require 'open-uri'
 
src = ''
open('http://del.icio.us/feeds/json/hokousya?raw') do |file|
  src = file.read
end
 
parser = JsonParser.new
json = parser.parse(src)
 
json.each do |item|
  print "name : #{item['d']}\n"
  print "url : #{item['u']}\n\n"
end

そのほかにも JSON 形式でデータを渡してくれる API はたくさんありますので、いろいろ応用できると思います。よろしければ使ってみてください。

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles