4 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
大多數(shù)瀏覽器都支持JSON.parse()
,這是在ECMA-262第5版(JavaScript所基于的規(guī)范)中定義的。它的用法很簡(jiǎn)單:
var json = '{"result":true,"count":1}',
obj = JSON.parse(json);
alert(obj.count);
/* or ES6 */
const json = '{"result":true,"count":1}' || {};
const { result, count } = JSON.parse(json);
alert(result);
alert(count);
對(duì)于沒(méi)有的瀏覽器,您可以使用json2.js實(shí)現(xiàn)它。
如評(píng)論中所述,如果您已經(jīng)在使用jQuery,那么有一個(gè)$.parseJSON函數(shù)可以映射到JSON.parse可用的或eval舊版瀏覽器中的一種形式。但是,這會(huì)執(zhí)行額外的,不必要的檢查也會(huì)執(zhí)行JSON.parse,因此為了獲得最好的全面性能,我建議使用它,如下所示:
var json = '{"result":true,"count":1}',
obj = JSON && JSON.parse(json) || $.parseJSON(json);
這將確保您JSON.parse立即使用native ,而不是讓jQuery在將字符串傳遞給本機(jī)解析函數(shù)之前對(duì)字符串執(zhí)行完整性檢查。

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
首先,您必須確保JSON代碼有效。
之后,如果可以的話,我建議使用jQuery或Prototype等JavaScript庫(kù),因?yàn)檫@些東西在這些庫(kù)中得到了很好的處理。
另一方面,如果您不想使用庫(kù)并且可以保證JSON對(duì)象的有效性,我只需將該字符串包裝在匿名函數(shù)中并使用eval函數(shù)。
如果您從另一個(gè)不完全信任的源獲取JSON對(duì)象,則不建議這樣做,因?yàn)槿绻敢猓琫val函數(shù)允許使用renegade代碼。
以下是使用eval函數(shù)的示例:
var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);
如果您控制正在使用的瀏覽器,或者您不擔(dān)心使用舊瀏覽器的人,則可以始終使用JSON.parse方法。
這真的是未來(lái)的理想解決方案。

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果從外部站點(diǎn)獲取此信息,使用jQuery的getJSON可能會(huì)有所幫助。如果它是一個(gè)列表,你可以使用$ .each迭代它
$.getJSON(url, function (json) {
alert(json.result);
$.each(json.list, function (i, fb) {
alert(fb.result);
});
});
添加回答
舉報(bào)