2013-02-28 59 views
1

需要对以下代码进行说明。实用程序中的JSON序列化

据我记得,有时回到Utilities.jsonStringify()没有保存JSON对象中的函数。但是现在他们将它保存为字符串(“resultFn”:“\ nfunction(pageNum,pageSize,filter){\ n return [{a:\”abc1 \“,b:\”bcd1 \“},{a: \“abc2 \”,b:\“bcd2 \”},{a:\“abc3 \”,b:\“bcd3 \”},{a:\“abc4 \”,b:\“bcd4 \”} ]; \ n})

而且使用eval(),该函数可以被带回(见我在myFunction的代码),它正常工作对我来说,至少对于简单的例子

问:据我所知。 ,功能序列化的标准之外,因为这是没有记录,我们可以依靠谷歌这个作为API合同

可我还加? - 这将节省我很多:)代码

线
var fnResults = function(pageNum, pageSize, filter) { 
    return [ 
     { a: "abc1", b: "bcd1" }, 
     { a: "abc2", b: "bcd2" }, 
     { a: "abc3", b: "bcd3" }, 
     { a: "abc4", b: "bcd4" }, 
    ]; 
}; 

var TestConfig = { 
    pagerId: "TestId", 
    pageSize: 10, 
    widgetWidth: "15cm", 
    filterOptions: [], 
    resultFn: fnResults, 
}; 


function myFunction() { 
    Logger.log(TestConfig.resultFn(1,2,3)); 
    var s = Utilities.jsonStringify(TestConfig); 
    Logger.log(s); 
    var o = Utilities.jsonParse(s); 
    Logger.log(eval(o.resultFn)(1,2,3)); 
} 

回答

0

这是一个错误,你不应该依赖它。

+0

嗨科里,谢谢你的答复。我可以问你的答复是否是Google官方的官方声明,还是因为它不符合JSON标准?如果谷歌继续作为自己的“增强”,我仍然可以很好地利用这一点 - 只要谷歌同意不改变它。 – 2013-03-01 05:49:03