2012-11-27 15 views
0

我應該在IE(專門)的項目中設置JSON格式的數據解析,我知道this library但數據傳輸將是重大問題,我想盡量減少移動的字節數量。避免在IE中使用JSON2庫

我將要消費的JSON對象非常小且相當平坦,在人類術語中可能最多3層深度爲30行。

有沒有更好的方法來解決這個問題? RegEx傾向於創造比解決問題更多的問題。關於如何挑選連接到稱爲例如節點的節點的值(或一組值)的任何其他想法shabong

我習慣於C#中的XDocument類,其中只需要指定後代的名稱即可獲取標籤中包含的一堆信息。類似的解決方案將是更可取的。 (老狗新花樣,嘿嘿。)

回答

1

如果您可以保證數據是安全的,那麼你可以使用evalFunction構造解析數據。

這是因爲JSON數據結構和值與JavaScript的文字符號非常相似,因此您通常可以將數據評估爲實際的JavaScript表達式。


使用eval

var parsed = eval("(" + myjsondata + ")"); 

使用Function

var parsed = (new Function("return " + myjsondata))(); 

而且,這僅僅是如果你是絕對肯定的數據的完整性被通過。由於您將其視爲程序的一部分,因此將會執行代替有效數據的任何惡意代碼。

Function版本提供了一點安全性,因爲它在全局範圍內調用,所以任何惡意代碼都無法訪問本地變量。這應該總體上提供一點舒適。


除了上述解決方案,您可以隨時創建自己的序列化,這是專門針對數據需求的。如果數據足夠簡單,它可以爲您提供爲自定義序列化編寫非常短而快的解析器的功能。

+0

我試着按照[這個討論] @Sujay的例子(http://stackoverflow.com/questions/5093582/json-is-undefined-error-in-ie-only),但我可以'似乎使它工作(和他的使用神祕的變量名稱使我的頭髮再見,再見,哈哈)。至於數據來源 - **是**我100%確定它是可靠的。如果不是 - 你好法律適合他們**大時間**。 :) –

+0

@KonradViltersten:您需要向Sujay詢問,但如果數據保證安全,那麼我只需使用上述其中一項。 –

+0

Yupp。它像一個魅力。星期五我需要展示一些工作,所以我會繼續努力。一個更詳細的解析器,如果需要,我可以稍後開發。謝謝! –