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所示。
圖1 json對象格式
1.1 json數值
請注意數值不需要加引号,鍵值對之間使用","。
【單個數值】
{“value”:12}
【多個數值】
{"maxvalue":24, "minvalue":12};
<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"}
var jsonobj = {"name":"xukai871105", "blog":"http://blog.csdn.net/xukai871105"};
console.log(jsonobj.name);
console.log(jsonobj.blog);
xukai871105
http://blog.csdn.net/xukai871105
1.3 json布爾
請注意json格式中的值可以使用布爾類型,且不需要加引号,如果true或false被引号包裹,那麼便解析為json字元串,請處理稍有不同。
{"success":false}
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]}
圖2 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]);
}
[5, 6, 7, 8]
5
6
7
8
3 json嵌套
json格式可以嵌套,所謂嵌套便是json對象中可包括json數組,json數組中可包括json對象。下面的例子中rows為json對象,對象中嵌套json數組,每一個json數組的元素又是一個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);
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函數
【為什麼要加括号 】
var jsonstr = '{"total":3}';
var jsonobj= eval('(' + jsonstr + ')');
【輸出】
3
5.常見錯誤
【1】多一個逗号
}或]前多一個, 這種情況不符合json,但是某些浏覽器可以容忍,例如chrome和火狐,但是某些浏覽器就無法容忍,例如ie。最好還是選擇json校驗工具測試一下json資料包是否合法。請注意下面一個例子中url最後的",",該逗号是多餘的。
"url": "http://blog.csdn.net/xukai871105/article/details/23115627",
6.參考資料