实用程序中的JSON序列化

时间:2013-02-28 20:14:43

标签: google-apps-script

需要澄清以下代码。

我记得,有时候返回Utilities.jsonStringify()没有在JSON对象中保存函数。但是现在他们将它保存为字符串(“resultFn”:“\ n 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中的代码)。它对我来说很好,至少对于琐碎的例子。

问:AFAIK,功能序列化不在标准范围内。由于没有记录,我们可以依靠Google作为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));
}

1 个答案:

答案 0 :(得分:0)

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