JSON

一直在用JSON,發現並不瞭解JSON。好吧,花點時間學習下。html

1、JSON的概念:什麼是JSON?

全稱:JavaScript Object Natation(JS對象標記法),JSON用字符串的格式表示結構化數據。而且獨立於語言,能夠在各語言間進行數據交換。json

2、JSON的語法:JSON是如何經過字符串表示結構數據的?

2.1 JSON的類型(6種):

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"

2.2 String

JSON 字符串是Unicode編碼的,用雙引號表示字符串(有些語言中(如JS)單引號也能表示字符串,可是畢竟大部分語言不支持這種表示,因此JSON字符串只能是雙引號表示)。
字符是大小敏感的。學習

"\"a\\nc\"" // "a\nc" 注意 \n是轉義字符,JSON還支持其餘轉義字符,見參考
"\"abc\"" // "abc"

2.3 Number

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

2.4 對象

對象就是鍵值對集合了,值能夠是6中類型的任意一種。htm

"{"a": 1, "b": true}" // 格式就是"{name1: value1, name2:value2}"

2.5 數組

數組時值的集合,值能夠是6中類型的任意一種。元素類型最好是同一類型,畢竟大多數語言不支持元素類型多種類型。對象

"[1,2]"
"[{\"a\":1}]"

3、日期的表示

大部分語言日期都是個對象,而且不是簡單的Plain Object,致使日期在各語言中JSON表示不徹底同樣(JavaScript中JSON.stringify方法經過Date.toString方法把日期轉成字符串),因此在有日期的數據交換時要注意。通常處理方法:將日期轉成各語言都支持的日期字符串格式(如:"yyyy-MM-dd hh:mm:ss"),還能夠將日期經過毫秒數值表示。ip

4、JSON Schema

JSON Schema是一種特殊的JSON數據,它是用來描述JSON數據的。字符串

參考

  1. JSON.org
  2. ajv
  3. 【第1276期】JSON Schema 那些事兒:基本概念
相關文章
相關標籤/搜索