JSON語法及JSON定義規範化
阿新 • • 發佈:2018-12-09
一、前言
JSON(JavaScript Object Notation, JS物件標記) 是一種輕量級的資料交換格式。它是基於 ECMAScript 的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。
二、JSON 語法規則
在 JS 語言中,一切都是物件。因此,任何支援的型別都可以通過 JSON 來表示,例如字串、數字、物件、陣列等。但是物件和陣列是比較特殊且常用的兩種型別:
- 物件表示為鍵值對
- 資料由逗號分隔
- 花括號儲存物件
- 方括號儲存陣列
JSON 是 JS 物件的字串表示法,它使用文字表示一個 JS 物件的資訊,本質是一個字串。JSON 和 JS 物件可以互轉。
- JS物件 –> JSON 字串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); // 結果是 '{"a": "Hello", "b": "World"}'
- JSON 字串 –> JS物件,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); // 結果是 {a: 'Hello', b: 'World'}
三、和XML的比較
1、例項比較
- 用XML表示中國部分省市資料如下:
<?xml version="1.0" encoding="utf-8"?>
<country>
<name>中國</name>
<province>
<name>黑龍江</name>
<cities>
<city>哈爾濱</city>
<city >大慶</city>
</cities>
</province>
<province>
<name>廣東</name>
<cities>
<city>廣州</city>
<city>深圳</city>
<city>珠海</city>
</cities>
</province>
<province>
<name>臺灣</name>
<cities>
<city>臺北</city>
<city>高雄</city>
</cities>
</province>
<province>
<name>新疆</name>
<cities>
<city>烏魯木齊</city>
</cities>
</province>
</country>
- 用JSON表示如下:
{
"name": "中國",
"province": [
{
"name": "黑龍江",
"cities": {
"city": [
"哈爾濱",
"大慶"
]
}
},
{
"name": "廣東",
"cities": {
"city": [
"廣州",
"深圳",
"珠海"
]
}
},
{
"name": "臺灣",
"cities": {
"city": [
"臺北",
"高雄"
]
}
},
{
"name": "新疆",
"cities": {
"city": [
"烏魯木齊"
]
}
}
]
}
可以看到,JSON 簡單的語法格式和清晰的層次結構明顯要比 XML 容易閱讀,並且在資料交換方面,由於 JSON 所使用的字元要比 XML 少得多,可以大大得節約傳輸資料所佔用得頻寬。
四、標準JSON格式定義
雖然在JSON並沒有特殊的格式要求,但是在實踐過程中,JSON有比較認可的格式規範:
- JSON格式的定義一般遵循如下規範:
{
"status": // 介面訪問成功或者失敗的狀態碼
"message": // 介面訪問錯誤的時候返回的錯誤提示文字,訪問成功的時候為空字串
"data":{ // 服務端實際返回的資料
}
}
- 請求介面失敗的例子
{
"status": "1",
"message": "您尚未登入,請登入後繼續操作"
}
- 請求介面成功的例子
{
"status": "0",
"message": "",
"data": {
"userId": "1",
"username": "zhangsan",
"worklist": [
{
"workId": "1",
"workname": "完成登陸介面設計"
},
{
"workId": "2",
"workname": "完成使用者中心功能編碼"
}
]
}
}
五、JSON 工具
- [x] JSON線上解析及格式化驗證
- [x] 格式化工具
- [x] JSON-XML互轉
六、參考資料
- [x] JSON_百度百科