天天看點

【cJson】 JSON格式詳解

0.前言

language, standard ecma-262 3rd edition - december 1999的一個子集。 json采用完全獨立于語言的文本格式,但是也使用了類似于c語言家族的習慣(包括c, c++, c#, java, javascript, perl, python等)。 這些特性使json成為理想的資料交換語言。

    json大緻3種結構,json對象、json數組和json對象和數組嵌套。

1 json對象

    json對象簡單而言便是鍵值對或名值對,而“值”可以是數值、字元串和布爾類型等。

    json對象具體格式如圖1所示。

【cJson】 JSON格式詳解

圖1 json對象格式

1.1 json數值

    請注意數值不需要加引号,鍵值對之間使用","。

    【單個數值】

{“value”:12}

    【多個數值】

{"maxvalue":24, "minvalue":12};

【cJson】 JSON格式詳解

<script>  

var jsonobj = {"maxvalue":24, "minvalue":12};  

console.log(jsonobj.maxvalue);  

console.log(jsonobj.minvalue);  

</script>  

    【輸出】

24

12

1.2 json字元串

    字元串需要加引号,鍵值對之間使用","。    

    【單個字元串】

{"name":"xukai871105"}

    【多個字元串】

{"name":"xukai871105", "blog":"http://blog.csdn.net/xukai871105"}

【cJson】 JSON格式詳解

var jsonobj = {"name":"xukai871105", "blog":"http://blog.csdn.net/xukai871105"};  

console.log(jsonobj.name);  

console.log(jsonobj.blog);  

【cJson】 JSON格式詳解

xukai871105  

http://blog.csdn.net/xukai871105  

1.3 json布爾

    請注意json格式中的值可以使用布爾類型,且不需要加引号,如果true或false被引号包裹,那麼便解析為json字元串,請處理稍有不同。

{"success":false}

【cJson】 JSON格式詳解

var jsonobj = {"success":false};  

console.log(jsonobj.success);  

    【輸出】

false

2 json數組

    json數組的表達方法和c語言數組的表達方法完全相同。下面的例子中存在一個json對象,該json對象隻有一個鍵值對,鍵為lists而鍵值為json數組——[5,6,7,8]。這裡已經存在json類型的嵌套,具體請看下面一個例子。

{"lists":[5,6,7,8]}

【cJson】 JSON格式詳解

圖2 json數組格式

【cJson】 JSON格式詳解

var jsonobj = {"lists":[5,6,7,8]};  

console.log(jsonobj.lists);  

for(var i=0; i<jsonobj.lists.length; i++) {  

    console.log(jsonobj.lists[i]);  

}  

【cJson】 JSON格式詳解

[5, 6, 7, 8]  

5  

6  

7  

8   

3 json嵌套

    json格式可以嵌套,所謂嵌套便是json對象中可包括json數組,json數組中可包括json對象。下面的例子中rows為json對象,對象中嵌套json數組,每一個json數組的元素又是一個json對象。這種嵌套情況在實際情況中經常出現。

【cJson】 JSON格式詳解

var jsonobj =  

{   

"total": 3,   

"rows": [   

"title": "樹莓派學習筆記——索引博文",   

"url": "http://blog.csdn.net/xukai871105/article/details/23115627"   

},   

"title": "樹莓派學習筆記——gpio功能學習",   

"url": "http://blog.csdn.net/xukai871105/article/details/12684617"   

"title": "物聯網學習筆記——索引博文",   

"url": "http://blog.csdn.net/xukai871105/article/details/23366187"   

}   

]   

};  

console.log(jsonobj.total);  

for(var i=0; i<jsonobj.rows.length; i++) {  

    console.log(jsonobj.rows[i].title);  

    console.log(jsonobj.rows[i].url);  

【cJson】 JSON格式詳解

3  

樹莓派學習筆記——索引博文  

http://blog.csdn.net/xukai871105/article/details/23115627   

樹莓派學習筆記——gpio功能學習  

http://blog.csdn.net/xukai871105/article/details/12684617   

物聯網學習筆記——索引博文  

http://blog.csdn.net/xukai871105/article/details/23366187  

4.javascript中eval函數

    【為什麼要加括号 】

【cJson】 JSON格式詳解

var jsonstr = '{"total":3}';  

var jsonobj= eval('(' + jsonstr + ')');  

  【輸出】

3

5.常見錯誤

【1】多一個逗号

}或]前多一個, 這種情況不符合json,但是某些浏覽器可以容忍,例如chrome和火狐,但是某些浏覽器就無法容忍,例如ie。最好還是選擇json校驗工具測試一下json資料包是否合法。請注意下面一個例子中url最後的",",該逗号是多餘的。

【cJson】 JSON格式詳解

"url": "http://blog.csdn.net/xukai871105/article/details/23115627",  

6.參考資料