在 JSON(JavaScript Object Notation)中,轉義(escaping)是用來處理特殊字符的技術,特別是那些在 JSON 格式中具有特殊意義的字符。這些字符需要進行轉義,否則會造成 JSON 結構無法正確解析或會引發錯誤。
JSON 轉義字符
  JSON 格式中的轉義字符通常是以反斜杠(\)開頭,後面跟隨一個特殊字符。常見的 JSON 轉義字符如下:
反斜杠(\):如果字串中包含反斜杠(\),則需要用 \\ 來表示。
例子:"path": "C:\\Users\\John"
  雙引號("):字串中的雙引號必須使用反斜杠來轉義,避免與 JSON 的字串邊界符號(雙引號)衝突。
例子:"quote": "He said, \"Hello!\""
  換行符(\n):表示換行。
例子:"text": "Line 1\nLine 2"
  回車符(\r):表示回車。
例子:"text": "Hello\rWorld"
  制表符(\t):表示 Tab 鍵(水平制表符)。
例子:"text": "Hello\tWorld"
  退格符(\b):表示退格符。
例子:"text": "Hello\bWorld"
  換頁符(\f):表示換頁符。
例子:"text": "Hello\fWorld"
  Unicode 字符(\u):以 Unicode 編碼表示特殊字符,後面跟隨四位十六進制數字。
例子:"emoji": "\uD83D\uDE03"(這表示一個笑臉符號)
  JSON 轉義範例
  假設我們有一個包含特殊字符的 JSON 對象:
原始資料:
  json
{
  "name": "John \"The Man\" Doe",
  "address": "C:\\Users\\John",
  "bio": "He said, \"Hello!\"",
  "text": "Line 1\nLine 2"
  }
  轉義後的 JSON:
  json
{
  "name": "John \"The Man\" Doe",
  "address": "C:\\Users\\John",
  "bio": "He said, \"Hello!\"",
  "text": "Line 1\nLine 2"
  }
  在這個範例中:
"John \"The Man\" Doe" 用兩個雙引號(\")來表示字串中的引號。
  "C:\\Users\\John" 用兩個反斜杠(\\)來表示字串中的反斜杠。
  "He said, \"Hello!\"" 同樣使用兩個雙引號來轉義字串中的引號。
  "Line 1\nLine 2" 使用 \n 來表示換行。
  JSON 轉義需要注意的地方:
  雙引號的轉義:在 JSON 中,字串必須用雙引號包圍,如果字串本身有雙引號,需要將它們轉義。
  反斜杠的轉義:反斜杠是 JSON 中的轉義字符,因此字串中的反斜杠必須轉義為 \\。
  Unicode 字符:如果字串中有非 ASCII 字符,可以使用 \u 來表示,這是處理特殊字符的有效方式,尤其是當需要處理多國語言的字符時。
  使用 JSON 轉義的實際場景:
  處理包含特殊字符的用戶輸入:用戶可能會輸入包含引號或換行符等字符的數據,這時必須對這些字符進行轉義,防止 JSON 格式錯誤。
  跨語言、跨平台的數據交換:當在不同系統或語言間交換 JSON 數據時,轉義確保了特殊字符能夠正確解析和顯示。
  小結:
  JSON 轉義的主要目的是確保字串中的特殊字符(如引號、反斜杠、換行符等)能夠被正確處理,以避免語法錯誤並保持數據的正確性。