日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

php和mysql網(wǎng)站模板 js讀取本地json文件數(shù)據(jù)

JSON語法JSON和XML類型,都是一種結(jié)構(gòu)化的數(shù)據(jù)表示方式 。所以,JSON并不是JavaScript獨有的數(shù)據(jù)格式,其他很多語言都可以對JSON進行解析和序列化 。
JSON的語法可以表示三種類型的值:
①簡單值:可以在JSON中表示字符串、數(shù)值、布爾值和null 。但JSON不支持JavaScript中的特殊值undefined 。
②對象:顧名思義 。
③數(shù)組:顧名思義 。
1.簡單值
“Lee”這兩個量就是JSON的表示方法,一個是JSON數(shù)值,一個是JSON字符串 。布爾值和null也是有效的形式 。但實際運用中要結(jié)合對象或數(shù)組 。
2.對象
JavaScript對象字面量表示法:
var box = {name : 'Lee',age : 100 }; 而JSON中的對象表示法需要加上雙引號,并且不存在賦值運算和分號:
{"name" : "Lee", //使用雙引號,否則轉(zhuǎn)換會出錯"age" : 100 } 3.數(shù)組
JavaScript數(shù)組字面量表示法:
var box = [100, ‘Lee’, true];
而JSON中的數(shù)組表示法同樣沒有變量賦值和分號:
[100, “Lee”, true]
一般比較常用的一種復(fù)雜形式是數(shù)組結(jié)合對象的形式:
[{"title" : "a","num" : 1},{"title" : "b","num" : 2},{"title" : "c","num" : 3}]PS:一般情況下,我們可以把JSON結(jié)構(gòu)數(shù)據(jù)保存到一個文本文件里,然后通過XMLHttpRequest對象去加載它,得到這串結(jié)構(gòu)數(shù)據(jù)字符串(XMLHttpRequest對象將在Aajx章節(jié)中詳細探討) 。所以,我們可以模擬這種過程 。
模擬加載JSON文本文件的數(shù)據(jù),并且賦值給變量 。
var box = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; PS;上面這短代碼模擬了var box = load(‘demo.json’);賦值過程 。因為通過load加載的文本文件,不管內(nèi)容是什么,都必須是字符串 。所以兩邊要加上雙引號 。
其實JSON就是比普通數(shù)組多了兩邊的雙引號,普通數(shù)組如下:
var box = [{name : 'a', age : 1},{name : 'b', age : 2}]; 4.解析和序列化
【php和mysql網(wǎng)站模板 js讀取本地json文件數(shù)據(jù)】如果是載入的JSON文件,我們需要對其進行使用,那么就必須對JSON字符串解析成原生的JavaScript值 。當然,如果是原生的JavaScript對象或數(shù)組,也可以轉(zhuǎn)換成JSON字符串 。
對于講JSON字符串解析為JavaScript原生值,早期采用的是eval()函數(shù) 。但這種方法既不安全,可能會執(zhí)行一些惡意代碼 。
varbox = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; alert(box); //JSON字符串 varjson = eval(box); //使用eval()函數(shù)解析 alert(json); //得到JavaScript原生值 ECMAScript5對解析JSON的行為進行規(guī)范,定義了全局對象JSON 。支持這個對象的瀏覽器有IE8+、Firefox3.5+、Safari4+、Chrome和Opera10.5+ 。不支持的瀏覽器也可以通過一個開源庫json.js來模擬執(zhí)行 。JSON對象提供了兩個方法,一個是將原生JavaScript值轉(zhuǎn)換為JSON字符串:stringify();另一個是將JSON字符串轉(zhuǎn)換為JavaScript原生值:parse() 。
var box = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; //特別注意,鍵要用雙引號 alert(box); var json = JSON.parse(box); //不是雙引號,會報錯 alert(json); var box = [{name : 'a', age : 1},{name : 'b',age : 2}]; //JavaScript原生值 var json = JSON.stringify(box); //轉(zhuǎn)換成JSON字符串 alert(json); //自動雙引號 在序列化JSON的過程中,stringify()方法還提供了第二個參數(shù) 。第一個參數(shù)可以是一個數(shù)組,也可以是一個函數(shù),用于過濾結(jié)果 。第二個參數(shù)則表示是否在JSON字符串中保留縮進 。
varbox = [{name : 'a', age : 1, height : 177},{name : 'b', age : 2, height : 188}]; var json = JSON.stringify(box, ['name', 'age'],4); alert(json); PS:如果不需要保留縮進,則不填即可;如果不需要過濾結(jié)果,但又要保留縮進,則講過濾結(jié)果的參數(shù)設(shè)置為null 。如果采用函數(shù),可以進行復(fù)雜的過濾 。

推薦閱讀