一直在用JSON,發現並不瞭解JSON。好吧,花點時間學習下。html
全稱:JavaScript Object Natation(JS對象標記法),JSON用字符串的格式表示結構化數據。而且獨立於語言,能夠在各語言間進行數據交換。json
JSON有6中數據類型示:object, array, number,string,bool(true, false),null(以前一直覺得JSON數據必需要包在花括號裏,囧)。絕大部分語言都有這6種數據類型,這樣JSON就能夠跨語言傳遞了(即獨立於語言)。數組
// 如下都是合法的JSON "{"a": 1}" // 對象 "[1,2,3,4]" // 數組 "[1,true,null,{"a":1}]" // 數組 注意表示不能誇語言,有些語言限制數組的元素類型一致 "1" // number 1 "true" // bool true "null" // null "\"abc\"" // 字符串 "abc" // 如下是否非法的JOSN字符串 "undefined"
JSON 字符串是Unicode編碼的,用雙引號表示字符串(有些語言中(如JS)單引號也能表示字符串,可是畢竟大部分語言不支持這種表示,因此JSON字符串只能是雙引號表示)。
字符是大小敏感的。學習
"\"a\\nc\"" // "a\nc" 注意 \n是轉義字符,JSON還支持其餘轉義字符,見參考 "\"abc\"" // "abc"
JSON 數字能夠整數,浮點數,科學計數法表示。編碼
"1" // 1 "0.1" // 0.1 "-1" // -1 "1e+2" // 1* (10 * 10) -> 100 (e大小寫不區分,即也能夠這樣表示"1E+2") "1e-2" // 1* (0.1 * 0.1) -> 0.01
注意:
A:正數不能帶」+「表示
B:只能表示10進制的數字,其餘進制不能表示。code
對象就是鍵值對集合了,值能夠是6中類型的任意一種。htm
"{"a": 1, "b": true}" // 格式就是"{name1: value1, name2:value2}"
數組時值的集合,值能夠是6中類型的任意一種。元素類型最好是同一類型,畢竟大多數語言不支持元素類型多種類型。對象
"[1,2]" "[{\"a\":1}]"
大部分語言日期都是個對象,而且不是簡單的Plain Object,致使日期在各語言中JSON表示不徹底同樣(JavaScript中JSON.stringify方法經過Date.toString方法把日期轉成字符串),因此在有日期的數據交換時要注意。通常處理方法:將日期轉成各語言都支持的日期字符串格式(如:"yyyy-MM-dd hh:mm:ss"),還能夠將日期經過毫秒數值表示。ip
JSON Schema是一種特殊的JSON數據,它是用來描述JSON數據的。字符串