読者です 読者をやめる 読者になる 読者になる

はてなブックマークエントリー情報取得APIの吐くJSONがここ数日で微妙に変わっていた件について

vimperatorのはてブを見る類のプラグインが動かなくなってたので調べてみた。
どうやら以前のAPIはJSON全体をくくるカッコ()が付加されて吐かれていたらしい。

({"related":~~~~,"count":~~~,"bookmarks":~~~~~})

これがここ数日の間に改善(?)されてカッコがはずれて吐かれるようになっていた

{"related":~~~~,"count":~~~,"bookmarks":~~~~~}

これの影響を受けて以下のvimperatorのプラグインは修正する必要がある

SBM Comments Viewer

http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/sbmcommentsviewer.js
はてブエントリーAPIのカッコ付きJSONに対応するためにわざわざ用意した関数jsonDecodeを使う必要が無くなるので本当は全体的にもっと短くなるかも

@@ -214,7 +214,7 @@
         },
         parser: function(xhr){
             //var json = window.eval(xhr.responseText);
-            var json = jsonDecode(xhr.responseText, true);
+            var json = jsonDecode(xhr.responseText, false);
             var count = json.bookmarks.length;
             var c = new SBMContainer('h', json.count, {
                 faviconURL:'http://b.hatena.ne.jp/favicon.ico',

Show Hatena Bookmark Comments

http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/hatenabookmark_show.js
カッコをつけてやればいい・・・これでいいのか?w

@@ -13,7 +13,7 @@
         xhr.open("GET",endPoint + url.replace(/#/,"%23"),false);
         xhr.send(null);
         var response;
-        if(!(response = window.eval(xhr.responseText))){
+        if(!(response = window.eval("("+xhr.responseText+")"))){
             liberator.echoerr("Does not exists!!");return;
         }
         var bookmarks = response["bookmarks"];

CodeReposに登録してないので誰かお願いします><