2013-04-28 12 views
0

JSON.stringify(值)不能處理只是一個小更大值時產生堆棧溢出。它會導致「堆棧溢出」錯誤。有沒有解決方法?json2.js JSON.stringify()處理大些值

json2.js爲https://github.com/douglascrockford/JSON-js

我通過Cscript.exe將運行在Windows DOS窗口我的JavaScript程序(WSH),它是JScript的V5.8在Windows 7和Windows 8

我無法找到使用的方式,據說內置JSON在JScript v5.8中。 所以我包含了json2.js,它的工作原理! 它的作品,但不是很好。 JSON.stringify(mydata)在mydata只是一個更大的結構時會生成「堆棧溢出」。

我包括json2.js的方式是: 打開json2.js,將整個json2.js讀入字符串ss,eval(ss)。然後JSON變得可用並且它可以工作。

順便說一句,我看不到JSON中的Cscript.exe JScript中V5.8,如何啓用它?

+0

你能否澄清「有點大」?例如,你能否包含一個能產生堆棧溢出錯誤的代碼樣本? – tjameson 2013-04-28 04:49:36

+0

像這樣的東西是一個數組的單元格。該陣列有大約200個這樣的單元。 JSON.stringify(words.forth [2])==> { 「名稱」: 「結束代碼」, 「VID」: 「所述」, 「WID」:2 「創建人」:[ 「代碼」], 「immediate」:true,「compileonly」:true,「hel p」:「end-code \ t( - )結束新的代碼字。」} 如果嘗試將整個數組串起來,那麼, JSON .stringify(words.forth)==>堆棧溢出。 JSON.stringify(words.wmi)==> [0,{「name」:「t/c」,「vid」:「wmi」,「」)如果嘗試將更小的數組串起來, WID 「:1,」 創建人 「:[」 冒號 「 」(創建)「], 」幫助「: 」T/C \噸( - \「 目標COMPU 叔\」)wmi.f工具。 .. snip .... – 2013-04-28 05:48:00

回答

1

通過WScript的/可用的CScript腳本引擎是在IE7中使用的 - 所以你已經沒有發現JSON對象(也沒有辦法以某種方式「使能」的話)。

堆棧溢出的最可能的原因是試圖序列,而不是正確的樹遞歸結構。我不相信JSON2.js支持這種情況。自參考結構簡單低於(正常JSON.stringify失敗就可以了)

var node = { a:"text"}; 
node.next = node; 
+0

我試過了,是的!JSON.stringify(node)也產生了'堆棧溢出',所以我會先檢查我的數據,非常感謝你! – 2013-04-28 05:53:36