1. 程式人生 > 實用技巧 >JavaScript基礎(17_操作json)

JavaScript基礎(17_操作json)

操作json

  • json

    • js中的物件 只有js自己認識,其他語言都不認識

    • json就是一個特殊格式的字串

      • 這個字串可以給任何語言識別,並且可以轉為任意語言中的物件

      • json在開發中主要用來資料互動

    • json

      • Javascript Object Notation JS物件表示法

      • JSON 和 js物件格式一樣,只不過json字串中的屬性名,必須加雙引號 必須加雙引號 必須加雙引號

      • 其他和js語法一致

  • JSON物件分類

    • 物件 {}

    • 陣列 []

  • JSON中允許的值

    • 字串

    • 數值

    • 布林值

    • null

    • 物件

    • 陣列

  • 將json字串轉換為js中的物件

    • 在js中,為我們提供了一個工具類,就叫JSON

    • 這個物件可以幫我們將JSON和js物件互相轉換

案例

// json陣列
// var arr = '[1,2,3,4,"hello",true]';
// json物件
var json_obj = '{"name":"swk", "age":18, "gender":"male"}';
var json_arr = '[1,2,3,4,"hello",true]';
​
// 將json 轉換為 js物件
/*
      JSON.parse()
        - 可以 將JSON字串轉為js物件
        - 他需要一個JSON字串作為引數,會將該字串傳轉換為JS物件
      
*/ var obj = JSON.parse(json_obj); console.log(obj.name); console.log(typeof obj) ​ var arr = JSON.parse(json_arr); console.log(arr[5]); ​ ​ // 將js物件 轉換為 JSON /* JSON.stringify() - 可以 將一個js物件轉換為JSON字串 - 他需要一個js物件為引數,會返回一個JSON字串傳 */var arr1 = {name:"豬八戒", age:28, gender:"男"};
var str = JSON.stringify(arr1); console.log(str); ​ ​ // JSON這個js中的類,在IE7及一下版本的瀏覽器中不支援 ,所以這些瀏覽器中呼叫時會報錯 // 假設需要相容IE7 或者說 某些瀏覽器中沒有 JSON物件的時候,需要使用eval()這個函式來操作 /* eval() - 這個 函式可以用來執行一段字串形式 的JS程式碼,並將執行結果返回 - 如果使用eval()執行的字串中含有{},它會將{}當成是程式碼塊 如果不希望將其當成程式碼塊解析,則需要在字串前後各加一個(),這樣eval()函式就不會執行 - eval()這個函式功能很強大,可以直接執行一個字串中的js程式碼 但是在開發中儘量不要使用,首先他的執行效能比較差 然後它還是具有安全隱患 ​ */ var str1 = '{"name":"豬八戒","age":28,"gender":"男"}'; var str2 = "alert('hello');"; ​ // 直接將str2裡面的js程式碼執行了 eval(str2); ​ var str_json = eval("("+str1+")"); console.log(str_json); console.log(typeof str_json); ​ // 為了相容IE7及以下版本的最終方案,是自定義一個JSON物件,與之前的一模一樣,來進行處理 // 這樣更安全、也更高效,而eval()這個強大的函式,儘量在開發中不要去使用,避免埋坑
顯示案例