2012-12-27 24 views
1

在調用Utilities.jsonStringify()時,我還沒找到正確處理對象中方法的方法。基本上,我無法使用我的對象,我從CacheService中檢索它並應用Utilities.jsonParse()。Utilities.jsonStringify和對象方法

有沒有人有提示?

在此先感謝。

Marc

+1

您的JSON格式是否正確?一段說明問題的代碼會更有幫助。我已經成功地使用了CacheService對象和JSON,並沒有出現問題。 – Srik

+0

複製/粘貼會有點長,但不要緊,因爲我可能會遇到GAS的另一個限制:我不能在CacheService中存儲大對象。我將嘗試使用ScriptDB ... – ballatom

+0

順便說一句,我通過將存儲的對象傳遞給類構造函數來解決問題(只是達到大小限制),以便它可以從緩存實例中複製屬性。 – ballatom

回答

1

json在字符串化/解析時不包含函數。你必須使用的東西,像homebrewn:

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)); 

當然解壓的funcs中失去了所有的瓶蓋。