---
# System prepended metadata

title: JSON(JavaScript Object Notation)
tags: [json, javascript]

---

# JSON(JavaScript Object Notation)
---
## JSON是甚麼
JSON是一個輕量的資料交換格式，常見應用在於前端送出的request可以為JSON格式，再由後端API解析，做處理後再以JSON格式resqonse。

---
## 相關知識
* JS
* OOP的概念
---
## 知識點
* JSON格式在開發WEB前後端都相當重要，除了些老舊網頁可能還使用XML。
* JSON格式的組成



---
## json介紹
### 一、資料型態
JSON跟各種程式語言都一樣都有資料型態

1. 數值：十進位數，不能有前導0，可以為負數，可以有小數部分。還可以用e或者E表示指數部分。不能包含非數，如NaN(Not a number)。**不區分整數與浮點數**。JavaScript用雙精度浮點數表示所有數值。

2. 字串：以雙引號""括起來的零個或多個Unicode碼位。支援反斜槓開始的跳脫字元序列。

3. 布林值：表示為true或者false。

4. 陣列：有序的零個或者多個值。每個值可以為任意類型。陣列使用方括號[]包裹。多個陣列元素之間用逗號,分隔，形如：[value, value]。

5. 物件：若干無序的「鍵-值對」(key-value pairs)，其中鍵只能是字串[1]。建議但不強制要求物件中的鍵是獨一無二的。物件以花括號{}包裹。多個鍵-值對之間使用逗號,分隔。鍵與值之間用冒號:分隔。

6. 空值：值寫為null

json在交換時必須為UTF-8的編碼

### 二、範例
觀看以下範例
```
{
  "squadName" : "Super hero squad",
  "homeTown" : "Metro City",
  "formed" : 2016,
  "secretBase" : "Super tower",
  "active" : true,
  "members" : [
    {
      "name" : "Molecule Man",
      "age" : 29,
      "secretIdentity" : "Dan Jukes",
      "powers" : [
        "Radiation resistance",
        "Turning tiny",
        "Radiation blast"
      ]
    },
    {
      "name" : "Madame Uppercut",
      "age" : 39,
      "secretIdentity" : "Jane Wilson",
      "powers" : [
        "Million tonne punch",
        "Damage resistance",
        "Superhuman reflexes"
      ]
    },
    {
      "name" : "Eternal Flame",
      "age" : 1000000,
      "secretIdentity" : "Unknown",
      "powers" : [
        "Immortality",
        "Heat Immunity",
        "Inferno",
        "Teleportation",
        "Interdimensional travel"
      ]
    }
  ]
}
```




### 三、閱讀器
方便閱讀json格式的資料

1. [JSON Viewer](https://chrome.google.com/webstore/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh?hl=zh_tw)：他是GoogleChrome的擴充套件。
2. 待新增，我目前使用第一個，有其他好用的再新增




---



###### tags: `javascript`、`json`、