はてなブックマークのJSONとlivedoor clipのJSON

はてな
http://b.hatena.ne.jp/entry/json/URL
livedoor
http://api.clip.livedoor.com/json/comments?link=URL

JSONコードを取得できるのだが、微妙に仕様が異なる。

はてなはオブジェクトの前後に()が付くのに対してlivedoorのは付かない

  • はてな:({"count":"100","bookmarks":[{....}]})
  • livedoor:{"link":"URL","Comments":[{....}]}

という感じ。

Firefox3から導入されたJavaScriptモジュールを使用して両者のコードをデコードしようと試みたのだが、()が付いているとデコードできずにエラーが返ってしまう。

Chrome特権上でコードを動かしているので単純にevalを使うのは危険かなと思い、SandBox上でデコードしてくれるJSON.jsmを使用したのだが...

仕方なしに、はてなの方はJSON.fromString(str.substring(1,str.length - 1)などとして()を取ってデコードしたが、これってJSON#fromStringの方でどうにかならないのかなぁ。

関連

ブクコメ経由。こちらはwindow.evalでデコードする時は前後に()を付けないといけないという話。
はてなJSONwindow.evalで簡単にデコード出来るようにしていると思われる。