2011-05-06 14 views
3

希望有人能找到這個錯誤,因爲我有麻煩定製JSON.stringify未能字符串化的對象作爲一個整體,但是當重複一個工作級深

好吧,我建立了自己的JSON.stringify只是定製大的物體。它可能並不完全符合某些邊緣案例的規範,但僅用於對我自己構建的大型對象進行串聯。

好,它的工作原理,並適用於大多數的對象,但我有一個對象,我試圖字符串化和它的失敗和退出前打印本:

node.js:134 
     throw e; // process.nextTick error, or 'error' event on first tick 
     ^
undefined 

不是非常有幫助。該對象是好的,因爲常規調用JSON.stringify(object)工作正常,當我迭代對象for (var x in obj) if (obj.hasOwnProperty(x)) { myStringify(obj); },工作正常,但如果我把它稱爲對象的頂層,它會下地獄......它不真正意義的我,我能想到的唯一的事情是,如果遞歸是某種突破的東西水平...

解析器:https://gist.github.com/958776 - 將字符串化功能我打電話
ObjectIterator.js:https://gist.github.com/958777 - 主要是爲了提供異步迭代

編輯所以,我迭代對象的一個​​深度,並將結果字符串與stri ng JSON.stringify(sameLevelDeep)和他們是平等的。由於輸出是相同的,我不確定這是如何解析某些東西,但可能它是一個如此龐大的對象,或遞歸量如此之高?

編輯2所以,我「固定」的問題,我猜。而不是每25次迭代被推到下一個事件循環,我每五分鐘就推一次。我不知道爲什麼這會有所作爲,但它確實......我想現在的問題是「爲什麼這會產生影響」?

+0

看起來我在ObjectIterator和Parser中留下了一些代碼,用於我正在做的一些調試......大部分日誌記錄和計時 – Robert 2011-05-06 11:34:58

+0

我建議嘗試將其與其他實現(例如, JSON.stringify在Chromium中,看看你是否有不同的行爲。 – ninjagecko 2011-05-06 11:39:49

+0

正如我所說的常規的'JSON.stringify(object)'工作。 – Robert 2011-05-06 11:42:29

回答

0

好吧,除了它是一個非常具體的問題,幫助一個非常具體的人,我想把它帶到一個不同的地方,這也可能會消除你的問題,也許幫助別人。

既然你沒有說明你爲什麼要經歷這個過程,我將不得不把它分解並猜測 - 併爲每個猜測的想法提供一個解決方案。

1(瀏覽器)你試圖使用JavaScript來緊縮的數據,並提供給用戶一個結果的原始數據的

下載至少​​幾兆字節(」 這些對象的一些是5 -10百萬個字符「)來處理和顯示結果遠非最佳,您應該在服務器端執行此操作並下載預先計算的結果。

此外,無論您在做什麼,JavaScript都不支持線程。 setTimeout(1, function() { JSON.stringify(data); });應該與你所做的不一樣。

2.(瀏覽器)您試圖顯示下載的內容

你應該嘗試使用內置的JSON.stringify方法下載,而不是整個10+億字的內容更小的塊。

3(非瀏覽器),你要使用JavaScript來要求穿

您應該考慮使用不同的編程語言爲這個應用程序的應用程序。

總之

我想你爬錯了山,就可以實現同樣的事情,它周圍行走而不破壞汗水。如果你想爬上一座山腳踢,那裏有山需要它 - 但它不是這個。

譯文:如果你想解決一個問題,那就需要解決一些問題 - 但這不是解決方案。

相關問題