JSON看這篇就好了

JSON

最近大量接觸JSON 因此我特地去JSON標準(短短的8頁,你們也能夠看看)看了下,還參閱了許多資料,總結一下JSONgit

咱們先來看一個JSON的組成:github

{
  "propertyName": "propertyValue"
}
複製代碼
  1. property(屬性/鍵值對)
  2. propertyName(屬性名/鍵)
  3. propertyValue(屬性值)

JSON能夠表示四種基本類型(string(字符串)、number(數字)、booleans(布爾值)、null(空))和兩個結構化類型(Object(對象)、Arrarys(數組))json

書寫

逗號

最後一個屬性後不能有逗號數組

雙引號

在標準中都使用了雙引號。由於全部的屬性必須在雙引號內。可是布爾值或者數字能夠不用引號。ide

結構層次

在設計JSON 的時候,咱們都能看見可擴展和不可擴展的JSON結構。其中最主要的就2種,一種爲扁平化數據,還有結構層次。ui

先講講我在知乎上看見的問題:google

正常狀況有一個JSON應爲:spa

[
  { 
    "name": "Javascript權威指南",
    "chapters:": 500,
  },
  {
    "name": "Javascript高級程序設計",
    "chapters": 500,
  },
  {...},
  {...}
]
複製代碼

這樣看是很完美,可是有些人會這樣設計?設計

[
  {
    "Javascript權威指南": 500
  },
  {
    "Javascript高級程序設計": 500
  }
]
複製代碼

那麼咱們就能夠看出2種設計的問題,第二種沒法擴展有木有!!並且。。他們爲啥要把數據內容帶入屬性名!!code

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字符串

參考

相關文章
相關標籤/搜索