JSON.parse() issue in Safari

12 views
Skip to first unread message

gugod

unread,
Oct 13, 2006, 10:23:15 AM10/13/06
to hsinchu.js
JSON.org 提供了一個 Javascript 版的 JSON class:

http://www.json.org/json.js

其中的掛在 String 類別的 parseJSON
函式,可檢查字串是否為 JSON
格式,若是的話則解析它,將其中的資料解涷,成為變數。

但是這個函式在碰到很長的字串的時候,會讓 Safari
Crash。於是只好做些限制:
String.prototype.parseJSON = function () {
try {
if ( this.length > 5 * 1024 ) {
return eval('(' + this + ')');
}
return (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u
\n\r\t])+?$/.test(this)) &&
eval('(' + this + ')');
} catch (e) {
return false;
}
};

也就是,在長度大於 5K 時,完全不檢查,直接
eval。雖然有些風險,不過有時為了讓 Safari 不
Crash,也只好照做了。

Cheers,
Kang-min Liu

Reply all
Reply to author
Forward
0 new messages