JSON
JavaScript Object Notation JS對象表示法
// notation [nəʊ'teɪʃ(ə)n] n. 符號;樂譜;註釋;記號法
JS中的對象只有JS自己認識,其他的語言都不認識;
JSON就是一個特殊格式的字符串,這個字符串可以被任意的語言所識別,
並且可以轉換爲任意語言中的對象,JSON在開發中主要用來數據的交互。
JSON和JS對象的格式一樣,只不過JSON字符串中的屬性名必須加雙引號,其他的和JS語法一致
JSON分類:
1.對象 {}
2.數組 []
JSON中允許的值:
1.字符串
2.數值
3.布爾值
4.null
5.對象
6.數組
JS<–>JSON
在JS中,爲我們提供了一個工具類,就叫JSON,
這個對象可以幫助我們將一個JSON轉換爲JS對象,也可以將一個JS對象轉換爲JSON。
json --> js對象
JSON.parse()
[parse [pɑːz] vt. 解析;從語法上分析]
可以將以JSON字符串轉換爲js對象
它需要一個JSON字符串作爲參數,會將該字符串轉換爲JS對象並返回
var json = '{"name":"孫悟空","age":18,"gender":"男"}';
var o = JSON.parse(json);
JS對象 —> JSON
JSON.stringify()
可以將一個JS對象轉換爲JSON字符串
需要一個js對象作爲參數,會返回一個JSON字符串
var obj3 = {name:"豬八戒" , age:28 , gender:"男"};
var str = JSON.stringify(obj3);
JSON這個對象在IE7及以下的瀏覽器中不支持,所以在這些瀏覽器中調用時會報錯,
如果需要兼容IE7及以下的JSON操作,則可以通過引入一個外部的js文件來處理。
<script type="text/javascript" src="js/json2.js"></script>
eval()
這個函數可以用來執行一段字符串形式的JS代碼,並將執行結果返回;
如果使用eval()執行的字符串中含有{},它會將{}當成是代碼塊;
如果不希望將其當成代碼塊解析,則需要在字符串前後各加一個()。
eval()這個函數的功能很強大,可以直接執行一個字符串中的js代碼,
但是在開發中儘量不要使用,首先它的執行性能比較差,然後它還具有安全隱患
var str2 = "alert('hello');";
eval(str2) // 頁面彈出警告 'hello'
var str = '{"name":"孫悟空","age":18,"gender":"男"}';
// var obj3 = eval(str)
// Uncaught SyntaxError: Unexpected token :
// 直接解析會報錯,會將{}作爲代碼塊解析
var obj = eval("("+str+")");
// {name: "孫悟空", age: 18, gender: "男"}
console.log(obj);