

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# JSON 函數
<a name="json-functions-spark"></a>

當您需要儲存相當小的一組金鑰值對時，您可以用 JSON 格式儲存資料以節省空間。因為 JSON 字串可儲存於單一欄，採用 JSON 可能比以資料表格式儲存資料更有效率。

**Example**  
例如，假設您有一個稀疏的資料表，其中您需要許多資料欄才能完全代表所有可能的屬性。不過，任何指定資料列或任何指定資料欄的大部分資料欄值都是 NULL。透過使用 JSON 進行儲存，您可以在單一 JSON 字串中將資料列的資料存放在鍵值對中，並消除稀疏填入的資料表資料欄。



此外，您可以輕鬆修改 JSON 字串來儲存其他金鑰:值對，而不需要在資料表中新增欄。

建議少用 JSON。JSON 不是存放較大資料集的好選擇，因為透過將不同的資料儲存在單一資料欄中，JSON 不會使用 AWS Clean Rooms 資料欄存放區架構。

JSON 使用 UTF-8 編碼的文字字串，所以 JSON 字串可儲存為 CHAR 或 VARCHAR 資料類型。如果字串包含多位元組字元，請使用 VARCHAR。

JSON 字串必須是符合下列規則的適當格式化 JSON：
+ 根層級 JSON 可以是 JSON 物件或 JSON 陣列。JSON 物件是一組未排序的逗號分隔金鑰:值對 (以大括號括住)。

  例如 `{"one":1, "two":2} `
+ JSON 陣列是一組已排序的逗號分隔值 (以方括號括住)。

  以下是範例：`["first", {"one":1}, "second", 3, null] `
+ JSON 陣列採用以零開始的索引；陣列的第一個元素在位置 0。在 JSON 金鑰:值對中，金鑰是雙引號括住的字串。
+ JSON 值可以是下列任何值：
  + JSON 物件 
  + JSON 陣列 
  + 雙引號中的字串
  + 數字 (整數和浮點數) 
  + Boolean
  + Null 
+ 空物件和空陣列是有效的 JSON 值。
+ JSON 欄位區分大小寫。
+ 忽略 JSON 結構元素之間的空格 (例如 `{ }, [ ]`)。

**Topics**
+ [GET\_JSON\_OBJECT 函數](GET_JSON_OBJECT.md)
+ [TO\_JSON 函數](TO_JSON.md)