網(wǎng)站建設(shè)前期準備衡水網(wǎng)站優(yōu)化推廣
JSON介紹
JSON(JavaScript Objet Notation)是一種輕量級的數(shù)據(jù)交換格式。它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。它采用一種鍵:值
對的文本格式來存儲和表示數(shù)據(jù),在系統(tǒng)交換數(shù)據(jù)過程中常常被使用,是一種理想的數(shù)據(jù)交換語言。
“XML的時代已經(jīng)過去,現(xiàn)在是JSON的時代”。相信現(xiàn)在這個觀點很多人已經(jīng)默認認同,那么我們是否有認真思考過為什么現(xiàn)在JSON能夠頂替XML的地位。我們來簡單看下兩種的表示方式:
<?xml version="1.0" encoding="gb2312"?>
<class><stu id="001"><name>楊過</name> <sex>男</sex><age>20</age></stu> <stu id="002"><name>小龍女</name> <sex>女</sex><age>18</age></stu>
</class>
[{"id": "001","name": "楊過","sex": "男","age": "20"},{"id": "002","name": "小龍女","sex": "女","age": "18"}
]
兩種方式都是用來描述簡單的班級信息,數(shù)據(jù)不多,但是明顯可以看出JSON比XML更加簡潔。具體區(qū)別可為以下幾點:
- 可讀性:JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規(guī)范的標簽形式,很難分出勝負。
- 可擴展性:XML天生有很好的擴展性,JSON當然也有,因此XML能擴展的,JSON也可以擴展。
- 編碼程度:XML有豐富的編碼工具,比如DOM4J、JDom等,JSON也提供許多工具。但是在沒有工具的情況下,因為XML有很多結(jié)構(gòu)上的字符,編程難度相對較高。
- 解碼難度:XML的解析需要考慮到子節(jié)點父節(jié)點,難度較大,而JSON的解析難度幾乎為0,看上去就能理解數(shù)據(jù)結(jié)構(gòu)。
JSON認知
JSON具有以下形式(JSON對象、JSON數(shù)組、JSON字符串)
- JSON 對象
{"id": "002","name": "小龍女","sex": "女","age": "18"
}
這就是一個簡單的JSON對象,我們觀察可以得出的一些語法:
- 數(shù)據(jù)在花括號中
{}
- 數(shù)據(jù)處以
鍵:值
對的形式出現(xiàn)(其中鍵多以字符串的形式出現(xiàn),值可以為字符串、數(shù)值以及JSON對象) - 每兩個
鍵:值
對以,
分隔,最后一個鍵值對省略,
我們按照上述三個特征,便可以很簡單的構(gòu)建出一個JSON對象。
- JSON 數(shù)組
["value1","value2","value3"]
或
[{"id": "001","name": "楊過","sex": "男","age": "20"},{"id": "002","name": "小龍女","sex": "女","age": "18"}
]
數(shù)組的表示方式也很簡單:
- 頭尾由
[]
包裹 - 數(shù)據(jù)主鍵以
,
隔開
- JSON 字符串
'{"id": "001", "name": "楊過", "sex": "男", "age": "20"}'
JSON字符串與Java的字符串非常相似。
- 它必須以
""
或''
包裹數(shù)據(jù),支持字符串的各種操作 - 里面的數(shù)據(jù)格式可以為JSON對象,也可以是JSON數(shù)組亦或者是兩個基本類型的組合變形
以上便是JSON的基本形式,JSON可以適用于各種語言,每個語言皆有各自的JSON實現(xiàn)方式。
JSON序列化反序列化的框架有很多,最常見的Jackson、阿里巴巴開源的FastJson、谷歌的GSON、apache提供的json-lib等,下面我們主要來熟悉一下:Java語言中FastJson的使用。