鏈接原文轉(zhuǎn)自:http://www.w3cschool.cn/json/xumd1piw.html
? ? ? ? ? ? ? ? ? ? ? ? ?http://www.cnblogs.com/zoumiaomiao/p/4909539.html
1逗概、json數(shù)據(jù):
JavaScript Object Notation(JavaScript 對(duì)象表示法);json是存儲(chǔ)和交換文本信息的語(yǔ)法(類(lèi)似于XML)裤翩,是一種輕量級(jí)的文本數(shù)據(jù)交換格式,比XML更快更小更易解析享怀。json數(shù)據(jù)的結(jié)構(gòu),json有兩種結(jié)構(gòu):對(duì)象和數(shù)組
2恃慧、json數(shù)據(jù)的寫(xiě)法與原生的對(duì)象寫(xiě)法的區(qū)別:
對(duì)象字面量一般寫(xiě)法是:
var aa ={name:"zoumm",job :"it",age :25};
json對(duì)象寫(xiě)法:
{"name":"zoumm","job":"it","age":23,"school":{"name":"大學(xué)名"园蝠,“add”:"中國(guó)"}}
因此:json對(duì)象不用定義變量,末尾不用寫(xiě)分號(hào)痢士,切所有的屬性名必須加雙引號(hào)彪薛;
一般數(shù)組是這樣定義的:
var aa = [23,"zoumm"];
json數(shù)組是這樣定義的
[23,"zoumm"]
他們的區(qū)別是,json數(shù)組不用定義變量怠蹂,末尾不用寫(xiě)分號(hào)善延;
3、為什么json數(shù)據(jù)要解析:json數(shù)據(jù)在傳輸?shù)倪^(guò)程中是以文本格式存在的城侧,即以字符串的形式存在易遣,然而我們的js中操作的卻是對(duì)象,因此我們必須將json數(shù)據(jù)解析成對(duì)象的操作嫌佑,然后才能用對(duì)象對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)豆茫。
數(shù)據(jù)格式:
Json字符串:var json_str = ‘{"name":"xiao","age":12}';//單引號(hào)
Josn對(duì)象:var obj = {"name":"xiao","age":12};
JS對(duì)象:Object {name: "xiao", age: 12}
因此:要將Json字符串——>JS對(duì)象
4、json數(shù)據(jù)的解析:
a屋摇、JSON提供了json.js包揩魂,下載http://www.json.org/json.js 后,將其引入然后就可以簡(jiǎn)單的使用object.toJSONString()轉(zhuǎn)換成JSON數(shù)據(jù)摊册。
b肤京、用eval()方法轉(zhuǎn)換到Object,再obj.toJSONString()
function myEval() {
var str = '{ "name": "Violet", "occupation": "character" }';
var obj = eval('(' + str + ')');
alert(obj.toJSONString());
}
3茅特、或者用parseJSON()方法,再obj.toJSONString()
注意:eval()是JS原生函數(shù)棋枕,使用該形式:eval(‘('+‘{name:"xiao",age:12}'+')')白修,并不安全,無(wú)法保證類(lèi)型轉(zhuǎn)換為JS對(duì)象;不建議使用
例子:
5重斑、JS對(duì)象——>Json字符串: