說說JSON

JSON(JavaScript對(duì)象表示法),它的出現(xiàn)讓XML漸漸退出了數(shù)據(jù)交互格式的舞臺(tái)。JSON是一種輕量級(jí)的數(shù)據(jù)交互格式,很多編程語言都支持對(duì)JSON的解析和序列化。


JSON格式實(shí)際上只有兩個(gè)東西:key和value,value可以表示簡(jiǎn)單值、對(duì)象、數(shù)組。

1.表示簡(jiǎn)單值

//最簡(jiǎn)單的JSON
"SunnyChuan"

2.表示對(duì)象

//JSON
{
    "name":"SunnyChuan",//逗號(hào)分隔
    "age":21//結(jié)尾沒有分號(hào)
}
//對(duì)比JavaScript對(duì)象字面量表示
var obj={
    name:"SunnyChuan",
    age:21
};

通過對(duì)比可以看出,JSON的key必須用雙引號(hào)括起來(單引號(hào)錯(cuò)誤),沒有末尾的分號(hào),這兩個(gè)是常見的錯(cuò)誤。

3.表示數(shù)組

[
   {
      "name":"SunnyChuan",
      "age":21
   },
   {
      "name":"LuckyJing",
      "age":20
   }
]

4.復(fù)雜的JSON
通過對(duì)象、數(shù)組的組合,JSON可以組合成復(fù)雜的形式,數(shù)組里嵌套對(duì)象,對(duì)象里面嵌套數(shù)組等,可以通過JSON在線校驗(yàn)工具來測(cè)試JSON格式是否正確:http://json.cn/

5.JSON解析和序列化
解析:通過JSON.parse()將JSON數(shù)據(jù)轉(zhuǎn)化為對(duì)象,eval()也可以解析JSON但是不推薦。

//myJson.json文件
{
    "name":"SunnyChuan",
    "age":21
}

//前端代碼
window.onload=function(){
    var xml=new XMLHttpRequest();
    xml.onreadystatechange=function()
    {
        if(xml.readyState==4 && xml.status==200)
        {
            console.log(JSON.parse(xhr.responseText).name)//SunnyChuan
        }
    };
    xml.open("get","myJson.json");
    xml.send();
}

序列化:JSON.stringify()將JavaScript對(duì)象序列化為JSON數(shù)據(jù)格式發(fā)送給后端。

var obj={
    name:"SunnyChuan",
    age:21
};

//省去一些代碼
xml.open("POST","ajax.php");
var data=JSON.stringify(obj);
xml.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xml.send(data);

后端將會(huì)接收到字符串{"name":"SunnyChuan","age":21}


JSON作為數(shù)據(jù)格式是前后端交互必用(也可以用XML)的,個(gè)人做項(xiàng)目的時(shí)候深深感受到了JSON帶來的便利。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容