1

Utilities.jsonStringify() を呼び出すときに、オブジェクト内のメソッドを適切に処理する方法をまだ見つけていません。基本的に、オブジェクトを CacheService から取得して Utilities.jsonParse() を適用した後は、オブジェクトを使用できません。

誰にもヒントはありますか?

前もって感謝します。

マルク

4

1 に答える 1

1

json には、文字列化/解析時に関数が含まれていません。次のような自家製のものを使用する必要があります。

function func2String(obj) {
  var res={};
  for (x in obj) {
    var value=obj[x];
    res[x]=(typeof(value)=='function')?value.toString():value;
  }
  return res;
}
function string2Func (obj) {
  var res={};
  for (x in obj) {
    var value=obj[x];
    if(typeof(value)!='string') {
      res[x]=value;
    }
    else {
      res[x]=(value.substring(0,9)=='\nfunction')?eval('('+value+')'):value;
    }  
  }
  return res;
}

利用方法:

var obj=string2Func (Utilities.jsonParse(q.diff));
var str=Utilities.jsonStringify(func2String(diff));

もちろん、アンパックされた関数はすべてのクロージャーを失いました。

于 2012-12-27T11:53:02.083 に答える