天天看點

JSON 基礎知識總結

json,說白了就是javascript用來處理資料的一種格式,這種格式非常簡單易用。json大部分都是用來處理javascript和web伺服器端之間的資料交換,把背景web伺服器的資料傳遞到前台,然後使用javascript進行處理,例如ajax等

json支援的語言非常多,包括javascript、c#、php、java等等,這是由于json獨立于語言的輕量級的資料交換格式,這個特點有點類似于sql語言

json結構共有2種:無序的對象結構、有序的數組結構;

對象結構是使用大括号“{}”括起來的,大括号内是由0個或多個用英文逗号分隔的“關鍵字:值”對(key:value)構成的

這裡的鍵名是字元串,但是值可以是數值、字元串、對象、數組或邏輯true和false

json數組結構是用中括号“[]”括起來,中括号内部由0個或多個以英文逗号“,”分隔的值清單組成

在json數組中,每一對“{}”相當于一個json對象

json是javascript object notation的簡稱,是一種輕量的資料表示方法。json格式采用key:value的方式記錄資料,非常直覺,比xml簡潔,因而大受歡迎

簡單地說,json 可以将 javascript 對象中表示的一組資料轉換為字元串,然後就可以在函數之間輕松地傳遞這個字元串,或者在異步應用程式中将字元串從 web 用戶端傳遞給伺服器端程式。這個字元串看起來有點兒古怪,但是 javascript 很容易解釋它,而且 json 可以表示比名稱/值對更複雜的結構。例如,可以表示數組和複雜的對象,而不僅僅是鍵和值的簡單清單

當需要表示一組值時,json 不但能夠提高可讀性,而且可以減少複雜性

掌握了json格式後,在javascript中将json資料指派給變量就很簡單了。json是javascript原生格式,這意味着在javascript中處理json資料不需要任何特殊的 api 或工具包

例如,可以建立一個新的javascript變量,然後将 json 格式的資料字元串直接指派給它

實際上,隻需用點号表示法來表示數組元素。是以,要想通路 people 清單的第一個條目的姓氏,隻需在 javascript 中使用下面這樣的代碼:

利用這樣的文法,可以處理任何 json 格式的資料

可以将任何 javascript 對象轉換為 json 文本

json 格式支援以下資料類型:

類型

描述

數字型(number)

javascript 中的雙精度浮點型格式

字元串型(string)

雙引号包裹的 unicode 字元和反斜杠轉義字元

布爾型(boolean)

true 或 false

數組(array)

有序的值序列

值(value)

可以是字元串,數字,true 或 false,null 等等

對象(object)

無序的鍵:值對集合

空格(whitespace)

可用于任意符号對之間

null

javascript 中的雙精度浮點型格式,取決于實作。不能使用八進制和十六進制格式,在數字中不能使用 nan 和 infinity

下表展示了數字類型:

整形(integer)

數字1-9,0和正負數

分數(fraction)

分數,比如 .3,.9

指數(exponent)

指數,比如 e,e+,e-,e,e+,e-

零個或多個雙引号包裹的 unicode 字元以及反斜杠轉義序列

字元就是隻有一個字元的字元串,長度為 1

下表展示了字元串類型:

"

雙引号

\

反斜線

/

斜線

b

倒退符

f

換頁符

n

換行符

r

回車符

t

水準制表符

u

四位十六進制數字

包含 true 和 false 兩個值

它是一個有序的值集合,使用方括号閉合,這意味着數組以 [ 開始,以 ] 結尾,值使用 ,(逗号)分割,數組索引可以以 0 或 1 開始,當鍵名是連續的整數時應該使用數組

它是一個無序的名/值對集合,對象使用大括号閉合,以 '{' 開始,以 '}' 結尾,每個名稱後面都跟随一個 ':'(冒号),名/值對使用,(逗号)分割,鍵名必須是字元串并且不能同名,當鍵名是任意字元串時應該使用對象

json對象可以使用javascript建立。我們來看看使用 javascript 建立 json 對象的各種方式:

1.建立一個空對象:

2.建立一個新對象:

3.建立一個 bookname 屬性值為字元串,price屬性值為數字的對象。可以通過使用 '.' 運算符通路屬性

所謂json字元串,是指該字元串變量的值與json的格式相同,但是不是json對象

雖然status_process的值符合json對象的格式,但是它不是對象,隻是一個字元串(是拼湊出來的),将字元串轉換為json對象使用函數eval,eval("(" + status_process+ ")")。

可以在任意一對符号之間插入。可以添加用來讓代碼更可讀

意味着空類型

包括:數字(整型和浮點型)、字元串、布爾值、數組、對象、null