2013-02-28 58 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