WebサービスのXMLデータをJSONPに変換する – Yahoo Query Language (YQL) –
前記事の「Yahooテキスト解析 Webサービス」の解析結果はXML形式で返されるので、取り扱いが少々面倒だ。そこで、Yahoo Query Language (YQL) を使って、これをJSON(JSONP)形式に変換する。(解説記事はこれ。)
ざっくり言うと、「解析を依頼するリクエスト文字列」を「YQLに投げて結果を取り出す」ことになる。テキスト解析のリクエストはYQLから投げられるので、自分が発行するのはYQLに対するリクエストのみ。また、解析対象文字列のエンコードはYQL側で行われるようなので、そのまま渡すだけでOK。
function KanjiToKana(word, callback){ // 解析サーバに対するパラメータ var param = 'appid=' + appid+ '&'; param += 'sentence=' + word; // 解析サーバへのリクエスト文字列 var uri = 'http://jlp.yahooapis.jp/MAService/V1/parse' + '?' + param; // YQLサーバへのリクエスト文字列 //// url = ... で解析サーバへのリクエストURLを記述 //// SELECT * ... で結果の取り出し方法を記述(今回は*を指定してそのままもらう) var query = "SELECT * FROM xml WHERE url = '" + uri + "'"; //console.debug(query); // YQLサーバへのリクエスト発行 $.getJSON("http://query.yahooapis.com/v1/public/yql?callback=?", { q: query, format: "json" }, function(d){ // 結果の中から必要な部分のみ取り出し var ret = d.query.results.ResultSet.ma_result.word_list; callback(ret); }); }
例えば、これに「越後湯沢」を与えて実行すると、戻り値(ret)は1つのオブジェクトで、
ret.word.reading に求めている「えちごゆざわ」がセットされている。(ちなみに、これが名詞であることも合わせて教えてくれる。)
[…] 解析結果は(少々やっかいなことに)XML形式で返される。これをJSON(JSONP)で取り扱う方法は別途説明する。 […]