JSON 文件表示法
JSON 文件由欄位組成,這些欄位是名稱/值配對物件。 這些欄位可以任意順序,並以巢狀方式或陣列方式排列。 Db2® 可以使用 JSON 文件的原始 JSON 格式或二進位編碼格式 BSON (二進位 JSON)。
如需 JSON 文件的相關資訊,請參閱 JSON 文件。
JSON 資料必須以 Unicode 提供,並使用 UTF-8 編碼。 BSON 格式的資料必須在內部使用小序排列法格式。
為了方便起見,提供了 SYSIBM.JSON_TO_BSON 和 SYSIBM.BSON_TO_JSON 轉換函數。 您可以視需要執行這些函數,將檔案從一種格式轉換成另一種格式。
當 JSON 資料呈現給 Db2 作為 JSON SQL 函數的輸入時,首先會根據一般 Db2 資料類型預期,將該資料解譯並儲存在適當的 Db2 資料類型內。 然後,根據來源 Db2 資料類型,將值轉換為對等原始 JSON 資料類型所需的格式。 然後由 JSON SQL 函數處理此 JSON 資料值。
- 數值、布林及空值不受影響。
- 字串值會以雙引號括住,且字串內的任何特殊字元都會跳出。
- 日期、時間及時間戳記值會以雙引號括住。
- 二進位值會解譯為 UTF-8 資料。
指定 FORMAT JSON 子句表示資料已採用 JSON 格式,且不需要由 Db2 變更為有效的 JSON 值。 此子句僅決定 Db2正在或未執行的格式處理。 子句未偵測到無效的 JSON。
下表提供如何從其 Db2 資料類型表示法處理值至對等 JSON 資料表示法的部分範例。 在這些範例中,會使用及不使用選用 FORMAT JSON 子句的規格來完成處理。
| DB2 資料類型 | Db2 值 | JSON 表示法 (未指定 FORMAT JSON 子句) | JSON 表示法 (指定 FORMAT JSON) | 輸入的說明 |
|---|---|---|---|---|
| 字串 (character string) | {"Name":123} | "{\"Name\":123}" | {"Name":123} | 字串中包含的有效 JSON 物件。 |
| 字串 (character string) | {"Name";123} | "{\"Name\";123}" | {"Name";123} | JSON 物件無效時的 FORMAT JSON |
| 字串 (character string) | ["Name" , "Address"] | "[\" Name \" , \" Address \"]" | ["Name" , "Address"] | 字串中包含的有效 JSON 陣列。 |
| 字串 (character string) | ["Name": "Address"] | "[\" Name \": \" Address \"]" | ["Name": "Address"] | 無效 JSON 陣列上的 FORMAT JSON |
BSON 格式的資料不會轉換,且會直接傳遞至 JSON SQL 函數,以作為 BSON 處理。
除非指定選用的 FORMAT JSON 子句,否則使用 Db2 二進位資料類型呈現給 JSON SQL 函數的資料會假設為 BSON 格式。
| DB2 資料類型 | 採用的格式 |
|---|---|
| BLOB | BSON |
| CHARACTER | JSON |
| CLOB | JSON |
| VARBINARY | BSON |
| VARCHAR | JSON |
複製索引鍵
與 JSON 本身類似, Db2 不會對 JSON 文件中的索引鍵名稱施行唯一性。 不強制唯一性,相同的索引鍵名稱可能在相同的 JSON 文件內存在一或多次,甚至在相同的 JSON 物件內。 在相同 JSON 物件中具有相同名稱的索引鍵會被視為重複索引鍵。 如果 JSON 物件中存在重複的索引鍵,則 Db2 處理只會傳回發現的第一個索引鍵。 第一個索引鍵可能是文件中第一個出現的索引鍵,也可能不是第一個出現的索引鍵。
例如,索引鍵 "a" 在此 JSON 文件中出現多次 (已格式化使範例更明顯):
{"a":{"b":10,
"c":11},
"a":{"d":70,
"e":71}}
在此情況下,索引鍵 "a" 被視為重複索引鍵名稱,因為它在相同的 JSON 物件內出現兩次。 Db2 只會從這個 JSON 物件傳回一個名稱為 "a" 的索引鍵。
{"a":{"b":10,
"c": 11},
"b":{"a":70,
"b": 71}}在此範例中,如果查詢適當的 JSON 物件,則不會將索引鍵 "a" 視為重複索引鍵名稱,且 Db2 會傳回 "a" 的兩個值。 同樣地,雖然索引鍵名稱 "b" 在範例中出現多次,但它也只在每一個唯一 JSON 物件中出現一次。 因此,不會將其出現項目視為重複索引鍵。
BSON 格式
Db2 支援以 BSON 格式呈現的資料,作為 JSON SQL 函數的輸入。 BSON 資料可以由客戶提供,或從增補 [SYSIBM.JSON_TO_BSON] 轉換函數。
所有標準 BSON 資料類型限制會套用至提供作為 JSON SQL 函數輸入的值。 例如, BSON 格式支援的長整數上限為 9,223,372,036,854,775,807 (264 -1)。
- BSON 二進位
- BSON 物件 ID
- BSON 正規表示式
- BSON DB 指標
- BSON JavaScript 程式碼
- BSON JavaScript 程式碼與範圍
- BSON 符號
- BSON 時間戳記
- BSON 最小索引鍵
- BSON 索引鍵上限