備忘録(JSON)

『備忘録(JSON)』というタイトルにしてるけど、ここに投稿している内容は全て備忘録みたいなもんだから、『備忘録』というカテゴリに集約する場合には『JSON』というタイトルに変えるかも。

アプリケーションにActiveScriptEngineを組み込んでJavaScriptでアプリケーションの振る舞いを変える、という様なことを普段からやっている。
IEのコンポーネントを使ってJSONのオブジェクトと文字列との変換していたんだけど、IEが無くなって使えなくなったら困るのでJavaScriptで用意してみた。
IEが無くなってもIEのコンポーネントは残るらしいから今のところ使えなくなる心配は無いけど念のため。

var JSON = {
  parse: function(str) {
    return eval('(' + str + ')');
  },
  stringify: function(obj) {
    if(obj !== null) {
      var result = 'null';
      switch(typeof obj) {
        case 'number':
          if(isFinite(obj)) {
            result = obj.toString();
          }
          break;
        case 'boolean':
        case 'function':
          result = obj.toString();
          break;
        case 'string':
          result = '"' + obj + '"';
          break;
        case 'object':
          var arrray = [];
          if(obj.length === undefined) {
            for(var key in obj) {
              arrray.push('"' + key + '": ' + this.stringify(obj[key]));
            }
            result = '{' + arrray.join(', ') + '}';
          }
          else {
            for(var i = 0 ; i < obj.length ; i++) {
              arrray.push(this.stringify(obj[i]));
            }
            result = '[' + arrray.join(', ') + ']';
          }
          break;
      }
      return result;
    }
    return 'null';
  }
};