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 回答