JSON
最近大量接觸JSON
所以我特意去JSON
標準(短短的8頁,大家也可以看看)看了下,還參閱了許多資料,總結一下JSON
我們先來看一個JSON
的組成:
{
"propertyName": "propertyValue"
}
複製程式碼
- property(屬性/鍵值對)
- propertyName(屬性名/鍵)
- propertyValue(屬性值)
JSON可以表示四種基本型別(string(字串)、number(數字)、booleans(布林值)、null(空))和兩個結構化型別(Object(物件)、Arrarys(陣列))
書寫
逗號
最後一個屬性後不能有逗號
雙引號
在標準中都使用了雙引號。因為所有的屬性必須在雙引號內。但是布林值或者數字可以不用引號。
結構層次
在設計JSON
的時候,我們都能看見可擴充套件和不可擴充套件的JSON結構。其中最主要的就2種,一種為扁平化資料,還有結構層次。
先講講我在知乎上看見的問題:
正常情況有一個JSON應為:
[
{
"name": "Javascript權威指南",
"chapters:": 500,
},
{
"name": "Javascript高階程式設計",
"chapters": 500,
},
{...},
{...}
]
複製程式碼
這樣看是很完美,但是有些人會這樣設計?
[
{
"Javascript權威指南": 500
},
{
"Javascript高階程式設計": 500
}
]
複製程式碼
那麼我們就可以看出2種設計的問題,第二種無法擴充套件有木有!!而且。。他們為啥要把資料內容帶入屬性名!!
ok!我們知道了一點,不要把資料內容帶入屬性名。
接下來扁平化資料:
{
"Image": {
"width": 800,
"Height": 600,
"Title": "View from 15th Floor",
"ThumbnailUrl": "http://www.example.com/image/481989943",
"ThumbnailHeight": 125,
"ThumbnailWidth": 100
}
}
複製程式碼
結構層次:
{
"Image": {
"Width": 800,
"Height": 600,
"Title": "View from 15th Floor",
"Thumbnail": {
"Url": "http://www.example.com/image/481989943",
"Height": 125,
"Width": "100"
},
}
}
複製程式碼
JSON中本應該以資料元素扁平化方式呈現。
但是結構層次對我們開發人員更加的友好有意義。
具體情況看自己的選擇。
下面講點細的
屬性名規範
- 屬性名應該一看就知道啥用
- 屬性名必須是駝峰,ASCII碼字串
- 首字元必須是字母,_ (下劃線),$(美元符號)
- 避免使用js中的保留字
- 陣列型別應該是複數,其他屬性名都為單數
屬性值規範
- 屬性值應該為四種基本型別(string(字串)、number(數字)、booleans(布林值)、null(空))和兩個結構化型別(Object(物件)、Arrarys(陣列))
- 其他的具體可以看我下面給出的參考資料連結
方法
- JSON.parse()
- 解析一個JSON將他轉換成JavaScript值或物件
- JSON.stringify()
- 把一個物件或者值轉換成JSON字串