天津11选5开奖走势图手机版:JSON 使用

把 JSON 文本轉換為 JavaScript 對象

天津11选5预测官方 www.vocquh.com.cn JSON 最常見的用法之一,是從 web 服務器上讀取 JSON 數據(作為文件或作為 HttpRequest),將 JSON 數據轉換為 JavaScript 對象,然后在網頁中使用該數據。

為了更簡單地為您講解,我們使用字符串作為輸入進行演示(而不是文件)。

JSON 實例 - 來自字符串的對象

創建包含 JSON 語法的 JavaScript 字符串:

var txtJson = '{ "star_male" : [' +
'{ "name":"鹿晗" , "age":26 },' +
'{ "name":"李易峰" , "age":29 },' +
'{ "name":"陳赫" , "age":31 } ]}';

由于 JSON 語法是 JavaScript 語法的子集,JavaScript 函數 eval() 可用于將 JSON 文本轉換為 JavaScript 對象。

eval() 函數使用的是 JavaScript 編譯器,可解析 JSON 文本,然后生成 JavaScript 對象。必須把文本包圍在括號中,這樣才能避免語法錯誤:

var obj = eval ("(" + txtJson + ")");

栗子??:

JSON 值可以是:

var txtJson = '{ "star_male" : [' +
'{ "name":"鹿晗" , "age":26 },' +
'{ "name":"李易峰" , "age":29 },' +
'{ "name":"陳赫" , "age":31 } ]}';

//利用函數 eval() 轉換成JSON對象
var obj = eval ("(" + txtJson + ")");

//輸出數組的第一個對象的name值
alert("得到的值:" + obj.star_male[0].name);

JSON 解析器

提示:eval() 函數可編譯并執行任何 JavaScript 代碼。這隱藏了一個潛在的安全問題。

使用 JSON 解析器將 JSON 轉換為 JavaScript 對象是更安全的做法。JSON 解析器只能識別 JSON 文本,而不會編譯腳本。

在瀏覽器中,這提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。

嚴重:JSON 解析器 eval() 安全問題說明

大家都知道eval()函數就是evaluation

它的特點如果遇到運算符(/、*、-、+、>>等),它會直接計算結果,下面我們來看 一個Demo

//假如鹿晗有一張CD,name為“26-11”。
var txtJson = '{' + 
    '"name": "鹿晗",' + 
    '"cd_name": 26-11' + 
'}';
//利用函數 eval() 轉換成JSON對象
var obj = eval ("(" + txtJson + ")");
//輸出cd_name
alert("cd_name:" + obj.cd_name);

運行一下,你會驚訝的發現,結果為:

cd_name:15

結果為:26 - 11 = 15;

結論:得出的結果如果字符串里含有運算符,那么用 eval()不安全,它的結果是運算后的結果。

支付掃碼

所有贊助/開支都講公開明細,用于網站維護:贊助名單查看

正在加載... ...