JSON看這篇就行了

adherent發表於2018-01-08

JSON

最近大量接觸JSON 所以我特意去JSON標準(短短的8頁,大家也可以看看)看了下,還參閱了許多資料,總結一下JSON

我們先來看一個JSON的組成:

{
  "propertyName": "propertyValue"
}
複製程式碼
  1. property(屬性/鍵值對)
  2. propertyName(屬性名/鍵)
  3. 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字串

參考

相關文章