和JSON.parse
是執行相同的任務兩種功能。如果jQuery庫已經加載,就性能而言,使用jQuery.parseJSON
會比使用JSON.parse
更好嗎?jQuery.parseJSON VS JSON.parse
如果是,爲什麼?如果不是,爲什麼不呢?
和JSON.parse
是執行相同的任務兩種功能。如果jQuery庫已經加載,就性能而言,使用jQuery.parseJSON
會比使用JSON.parse
更好嗎?jQuery.parseJSON VS JSON.parse
如果是,爲什麼?如果不是,爲什麼不呢?
下面是摘錄from jQuery 1.9.1:
parseJSON: function(data) {
// Attempt to parse using the native JSON parser first
if (window.JSON && window.JSON.parse) {
return window.JSON.parse(data);
}
if (data === null) {
return data;
}
if (typeof data === "string") {
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim(data);
if (data) {
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if (rvalidchars.test(data.replace(rvalidescape, "@")
.replace(rvalidtokens, "]")
.replace(rvalidbraces, ""))) {
return (new Function("return " + data))();
}
}
}
jQuery.error("Invalid JSON: " + data);
},
正如你所看到的,jQuery將使用本地JSON.parse
方法(如果可用),否則它會嘗試與new Function
評估數據,這是一種如eval
。
所以,是的,你一定要使用jQuery.parseJSON
。
哇,很好的答案!謝謝大家,我認爲你是最全面的答案。 – 2012-04-28 09:39:47
根據json的來源,可能存在安全問題。 – 2012-04-28 09:41:02
rvalidchars.test的東西應該會捕獲無效的JSON;所以這看起來很安全。 – Daniel 2012-11-28 17:52:13
當瀏覽器提供了一個原生實現JSON.parse的,jQuery使用它來解析字符串。
從而意味着jQuery提供一個JSON解析器如果在瀏覽器不存在本地實現。 here's a comparison chart具有(並沒有)JSON功能的瀏覽器
所以我猜對了,甚至不知道jQuery;)。 – 2012-04-28 09:35:11
感謝您提供豐富的圖表:) – 2012-04-28 09:41:25
我不知道性能,但它使用jQuery方法肯定更安全,因爲ie7和更低版本的某些瀏覽器本地可能沒有任何JSON功能。
這是所有關於兼容性,就像你使用jQuery的每一個方法,而不是數組的迭代本地forEach
方法。
JSON.parse()本身在某些瀏覽器上可用,而不是在其他瀏覽器上可用,所以使用庫更安全。正如其他受訪者指出的那樣,JQuery的實施效果很好。還有Douglas Crockford's JSON library,它使用本地實現(如果可用)。
的JSON庫有它把一個JavaScript對象成JSON字符串,這是從jQuery的缺失目前的方法的優點..
最好的答案,因爲它表明爲什麼道格拉斯克羅克福德的JSON庫仍然是必要的。 – 2016-02-05 22:59:15
談到性能,則最新回答是JSON.parse
。
原生JSON對象是在支持每一個瀏覽器時下,所以選擇JSON.parse
。你可以看到支撐臺的位置:http://caniuse.com/#feat=json
您也可以搜索在JQuery的庫這個別名出現在GitHub上:https://github.com/jquery/jquery/search?utf8=%E2%9C%93&q=parseJSON
此外,jQuery.parseJson
被通過其他的答案這裏提到過時的版本 3.0+。
如果你要提供很老的瀏覽器的支持,才應使用jQuery的版本,如果你是一個老版本的JQuery +(通常,不推薦)。
如果您使用的是jQuery 3.0+,那麼您應該使用JSON.parse
,因爲jQuery.parseJSON
已被棄用。
從jQuery 3.0開始,不推薦使用$ .parseJSON。要解析JSON對象,請改用本機JSON.parse方法。
jQuery的內部使用JSON.parse
解析JSON file.So它不會使在大多數情況下任何區別。
但是一些舊瀏覽器不支持JSON.parse
功能。在這種情況下,使用jQuery.parseJSON
是有益的,因爲jQuery可以使用自己的函數處理JSON。
注:
jQuery.parseJSON
從jQuery的3.0.So棄用,請使用本地JSON.parse
方法。
我認爲JSON.parse在舊版瀏覽器中不適用。就速度而言,它們應該是相同的,JSON.parse應該更快一些(我認爲jQuery在較新的瀏覽器中使用JSON.parse)。 – 2012-04-28 09:33:00