JSON 數據格式解析
和 XML 一樣,JSON 也是基於純文本的數據格式。由於 JSON 天生是爲 JavaScript 準備的,因此,JSON 的數據格式非常簡單,您可以用 JSON 傳輸一個簡單的 String,Number,Boolean,也可以傳輸一個數組,或者一個複雜的 Object 對象。
String,Number 和 Boolean 用 JSON 表示非常簡單。例如,用 JSON 表示一個簡單的 String “ abc ”,其格式爲:
"abc"
除了字符 "
,\
,/
和一些控制符(\b
,\f
,\n
,\r
,\t
)需要編碼外,其他
Unicode 字符可以直接輸出。下圖是一個 String 的完整表示結構:
圖 1. String 的完整表示結構
一個 Number 可以根據整型或浮點數表示如下:
圖 2. Number 的表示結構
這與絕大多數編程語言的表示方法一致,例如:
12345(整數) -3.9e10(浮點數)
Boolean 類型表示爲 true
或 false
。此外,JavaScript
中的 null 被表示爲 null
,注意,true
、false
和 null
都沒有雙引號,否則將被視爲一個
String 。
JSON 還可以表示一個數組對象,使用 []
包含所有元素,每個元素用逗號分隔,元素可以是任意的
Value,例如,以下數組包含了一個 String,Number,Boolean 和一個 null:
["abc",12345,false,null]
Object 對象在 JSON 中是用 {}
包含一系列無序的
Key-Value 鍵值對錶示的,實際上此處的 Object 相當於 Java 中的 Map<String,
Object>
,而不是 Java 的 Class 。注意 Key 只能用 String 表示。
例如,一個 Address 對象包含如下 Key-Value:
city:Beijing street:Chaoyang Road postcode:100025(整數)
用 JSON 表示如下:
{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
其中 Value 也可以是另一個 Object 或者數組,因此,複雜的 Object 可以嵌套表示,例如,一個 Person 對象包含 name 和 address 對象,可以表示如下:
{"name":"Michael","address": {"city":"Beijing","street":" Chaoyang Road ","postcode":100025} }