{ "name" : "Lee",//使用雙引號,否則轉換會出錯 "age" : 100}數組
[100, "Lee", true]一般比較常用的一種復雜形式是數組結合對象的形式:[ { "title" : "a", "num" : 1 }, { "title" : "b", "num" : 2 }, { "title" : "c", "num" : 3 }]解析和序列化
JSON對象提供了兩個方法,一個是將原生JavaScript值轉換為JSON字符串:stringify();另一個是將JSON字符串轉換為JavaScript原生值:parse()。stringify()
stringify()方法接受三個參數,第一個是必須的,其他兩個可選。第二個參數可以是一個數組,也可以是一個函數,用于過濾結果。第三個個參數則表示是否在JSON字符串中保留縮進。<script type="text/javascript"> var box = [{name : 'a', age : 1, height : 177},{name : 'b', age : 2, height : 188}]; var json = JSON.stringify(box, ['name'],0);//[{"name":"a"},{"name":"b"}] console.log(json);</script>如果不需要保留縮進,則不填即可;如果不需要過濾結果,但又要保留縮進,則講過濾結果的參數設置為null。如果采用函數,可以進行復雜的過濾<script type="text/javascript"> var box = [{name : 'a', age : 1, height : 177},{name : 'b', age : 2, height : 188}]; var json = JSON.stringify(box, ['name'],4); console.log(json);</script>運行結果函數不能刪除鍵值對,只能修改,并且不能返回null或者空字符串還有一種方法可以自定義過濾一些數據,使用toJSON()方法,可以將某一組對象里指定返回某個值。
<script type="text/javascript"> var box = [{name : 'a', age : 1, height : 177, toJSON : function () { return this.name; }},{name : 'b',age : 2, height : 188, toJSON : function () { return this.name; }}]; var json = JSON.stringify(box, function (key, value) { switch (key) { case 'name' : return 'Mr. ' + value; case 'age' : return value + 'year'; default : return value; } }, 4); console.log(json);</script>運行結果如果對象里已經有了toJSON函數,則第二個參數是無效的
parse()
parse()接受兩個參數,第一個是必須的,第二個參數是一個函數(數組無效)<script type="text/javascript"> var box = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; var json = JSON.parse(box, function (key, value) { if (key == 'name') { return 'Mr. ' + value; } else { return value; } }); console.log(json[0].name);</script>
新聞熱點
疑難解答