xfy で json も扱いたい
xml を返すような rest な web-service は沢山ある。
それを xfy/xvcd で扱うには、つぎのようにする。
<xvcd:variable name="ws" select="サービスのURL"/>
<xvcd:apply-templates select="function:document($ws)"/
返信される XML の構造に即した変換template を用意しておけば,それに従った変換が行える。
最近は、XML でなく JSON で結果を返すサービスが増えている。
そんな場合は、JSON->XML 変換があれば、xfy/xvcd でも そのサービスを利用できるようになる。
そんな用途のためのライブラリーがあるようだ。
https://sourceforge.net/project/showfiles.php?group_id=171425
> > Json-lib
> ...
> Json-lib is a java library for transforming beans, maps, collections, java arrays and XML to JSON and back again to beans and DynaBeans. It is based on the work by Douglas Crockford in http://www.json.org/java.
>...
でも ここでは、ruby で json を返す web-service の利用例を示そう。
ruby では json ライブラリーで json データを扱える。(gem で install できる)
$ cat zip.rb
# See http://groovetechnology.co.jp/webservice/zipsearch/index.html
$KCODE="u"
require 'rubygems'
require 'json'
require 'net/http'
require 'pp'
def zip_code(code)
url = "http://groovetechnology.co.jp/ZipSearchService/v1/zipsearch?zipcode=#{code}"
resp = Net::HTTP.get_response(URI.parse(url))
data = resp.body
# we convert the returned JSON data to native Ruby
# data structure - a hash
result = JSON.parse(data)
return result
end
pp zip_code(ARGV[0])
実行してみる。
$ ruby zip.rb 1000001 | nkf -s
{"zipcode"=>
{"a1"=>
{"city"=>"千代田区",
"town_yomi"=>"チヨダ",
"prefecture"=>"東京都",
"zipcode"=>"1000001",
"city_yomi"=>"チヨダク",
"prefecture_yomi"=>"トウキョウト",
"town"=>"千代田"}},
"office"=>{}}
他にも json を返すサービスにはこんなものもある。
http://www.mashupedia.jp/webapis/view/221
星座占い
http://www.itarchitect.jp/print/?menu3=13821
Yahoo 検索サービス
« ピックアップ:ミクシィ神話の終焉, 押井 守 インタビュー, etc... | トップページ | yaml , json, xml の相互変換のまとめは何処かにないか »
この記事へのコメントは終了しました。
« ピックアップ:ミクシィ神話の終焉, 押井 守 インタビュー, etc... | トップページ | yaml , json, xml の相互変換のまとめは何処かにないか »
コメント