JsonBuilder Gem をリリースしました
categories: Ruby Rails tags: GitHub JSON Programming Release Ruby RubyGems XML
smart.fm API で XML と JSON の双方に含まれる情報を一致させる為に、XML Builder (Builder::XmlMarkup) と同じインタフェースで JSON を生成する JsonBuilder をリリースしました。
http://github.com/nov/jsonbuilder
これで XML フォーマットも JSON フォーマットも同じインタフェースで定義できるので、「XML の仕様を変更したのに、JSON の変更を忘れてた」なんてことが無くなります。
いままで smart.fm の XML と JSON の情報を一致させるのにいろいろ苦労しましたが、これでようやくその苦労から解放されそうです。
こんな感じで使えます。
def to_markup(format, options = {})
markup = case format
when :xml
Builder::XmlMarkup.new
when :json
Builder::JsonMarkup.new
end
markup.user(
:id => self.id,
:url => self.url
) do
markup.description(self.description)
markup.array_mode do
markup.friends do
package. friends.each do |friend|
markup << friend.to_markup(format)
end
end
end
end
markup.target!
end
def to_xml(options = {})
self.to_markup(:xml, options)
end
def to_json(options = {})
self.to_markup(:json, options).to_json
end
XML -> JSON の変換には、いくつかそのままでは変換できない点もあり、利用にはいくつか制約があります。利用時の制約を把握しないとなかなか使いずらいので、その辺りも追々ドキュメント化します。
(制約例:JSON に Array 要素を入れる場合には array_mode do ... end を使わなければならない、など)
