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 に求めている「えちごゆざわ」がセットされている。(ちなみに、これが名詞であることも合わせて教えてくれる。)


One Response to WebサービスのXMLデータをJSONPに変換する – Yahoo Query Language (YQL) –

  1. […] 解析結果は(少々やっかいなことに)XML形式で返される。これをJSON(JSONP)で取り扱う方法は別途説明する。 […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です