在這裏插入圖片描述

JSON 語法詳細介紹

一、JSON 簡介

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,具有以下特點:

  • 易於人閲讀和編寫
  • 易於機器解析和生成
  • 完全獨立於語言的文本格式

二、基本數據結構

1. 對象(Object)

  • 用花括號 {} 包裹
  • 包含無序的鍵值對集合
  • 鍵必須是字符串(用雙引號包裹)
  • 鍵和值用冒號 : 分隔
  • 鍵值對之間用逗號 , 分隔
{
  "name": "張三",
  "age": 25,
  "isStudent": true
}

2. 數組(Array)

  • 用方括號 [] 包裹
  • 值的有序集合
  • 值之間用逗號 , 分隔
["蘋果", "香蕉", "橙子"]

三、數據類型

1. 字符串(String)

  • 必須使用雙引號 ""
  • 支持轉義字符
"Hello World"
"姓名:\"張三\""

2. 數字(Number)

  • 整數或浮點數
  • 支持科學計數法
42
3.14
-10
1.2e3

3. 布爾值(Boolean)

true
false

4. 空值(Null)

null

5. 對象和數組(如上所述)

四、語法規則詳解

1. 鍵名規則

  • 必須是字符串
  • 必須用雙引號括起來
  • 鍵名在對象中必須唯一
{
  "first-name": "李",  // 合法
  "firstName": "李",   // 合法
  firstName: "李"      // 不合法(缺少雙引號)
}

2. 值的要求

  • 可以是任何 JSON 支持的數據類型
  • 可以嵌套對象或數組

3. 空白字符

  • 空格、製表符、換行符等空白字符可增加可讀性
  • 解析時會被忽略
{
  "name": "張三",
  "hobbies": ["閲讀", "運動"]
}

五、嵌套示例

複雜對象示例:

{
  "person": {
    "name": "王五",
    "age": 30,
    "address": {
      "city": "北京",
      "street": "長安街"
    },
    "phones": [
      {
        "type": "home",
        "number": "010-12345678"
      },
      {
        "type": "mobile",
        "number": "13800138000"
      }
    ]
  },
  "company": "ABC公司"
}

六、JSON 文件

  • 文件擴展名:.json
  • MIME 類型:application/json
  • 編碼:通常使用 UTF-8

七、JSON 與 XML 比較

特性 JSON XML
可讀性 較好 較好
數據量 較小 較大
解析速度 較快 較慢
數據結構 鍵值對 標籤樹

八、有效與無效示例

有效的 JSON:

{
  "數字": 123,
  "字符串": "值",
  "布爾值": true,
  "空值": null,
  "數組": [1, 2, 3],
  "對象": {"key": "value"}
}

無效的 JSON:

{
  name: "張三",      // 錯誤:鍵名未加雙引號
  'age': 25,         // 錯誤:使用單引號
  "hobbies": [游泳, 閲讀],  // 錯誤:字符串未加引號
  "isStudent": TRUE  // 錯誤:布爾值應為小寫
}

九、實際應用中的注意事項

  1. 日期格式:JSON 沒有日期類型,通常用字符串表示

    "2024-01-15T10:30:00Z"
    
  2. 特殊字符轉義

    {
      "路徑": "C:\\Windows\\System32",
      "引號": "他説:\"你好\""
    }
    
  3. 註釋:JSON 標準不支持註釋,但某些解析器支持

    {
      // 這是註釋(非標準)
      "name": "張三"
    }
    

十、JSON 在編程中的使用

JavaScript 示例:

// 解析 JSON 字符串
const obj = JSON.parse('{"name":"張三"}');

// 生成 JSON 字符串
const jsonStr = JSON.stringify({name: "張三"});

Python 示例:

import json

# 解析 JSON
data = json.loads('{"name": "張三"}')

# 生成 JSON
json_str = json.dumps({"name": "張三"})

總結

JSON 語法簡潔明瞭,主要記住幾個關鍵點:

  • 所有鍵名必須用雙引號
  • 字符串值必須用雙引號
  • 值可以是6種數據類型之一
  • 支持嵌套和複雜數據結構
  • 嚴格遵循語法規則,確保數據可交換性

結束語 Flutter是一個由Google開發的開源UI工具包,它可以讓您在不同平台上創建高質量、美觀的應用程序,而無需編寫大量平台特定的代碼。我將學習和深入研究Flutter的方方面面。從基礎知識到高級技巧,從UI設計到性能優化,歡飲關注一起討論學習,共同進入Flutter的精彩世界!