DynamoDB JSON 轉換器
在純 JSON 與 DynamoDB 的屬性值格式之間互相轉換 — 即時、在你的瀏覽器中執行。任何內容都不會傳送到伺服器。
純 JSON 與 DynamoDB JSON 的比較
DynamoDB 的低階線路格式會為每個值標記其類型。在你的應用程式看到 { "age": 36 } 之處,API 看到的是 { "age": { "N": "36" } }。那種屬性值形式正是 AWS CLI 所印出的內容、出現在 CloudWatch 日誌與 DynamoDB Streams 記錄中的內容,也是你貼進低階 PutItem 呼叫的內容。SDK 的文件用戶端會將它隱藏,因此這兩種格式在除錯時不斷交會。
本轉換器使用與 AWS SDK 相同的 marshalling 函式庫,因此輸出與 SDK 會產生的內容完全一致。它完全在你的瀏覽器中執行 — 函式庫按需載入,而你的資料絕不會離開頁面 — 這讓你能安全地貼上正式環境表格中的真實項目。
有兩個邊界情況會被明確處理。超過 JavaScript 安全整數範圍的數字會保留為字串,而非被默默地四捨五入;而格式錯誤的屬性值 — 例如帶有非數字文字的 number 類型 — 會引發明確的錯誤,而非被悄悄地強制轉換。目標是讓你可以信賴的忠實轉換,而非有損的近似。
初次接觸這些類型標記嗎? DynamoDB 資料類型 以範例逐一帶你了解每種屬性值類型。
常見問題
什麼是 DynamoDB JSON?
DynamoDB JSON(屬性值格式)會將每個值包進一個以其類型命名的單鍵物件中:字串是 { "S": "abc" }、數字是 { "N": "5" }、list 是 { "L": [...] }、map 是 { "M": {...} }。低階的 DynamoDB API 與 AWS CLI 之類的工具使用這種形式,而 SDK 文件用戶端與大多數應用程式碼則使用純 JSON。本轉換器在兩者之間進行轉換。
為什麼我的大數字會變成字串?
DynamoDB 以無精度上限的 38 位數十進位類型儲存數字,但 JavaScript 在超過 2^53 後會喪失精度。為了維持無損,在把 DynamoDB JSON 轉換為純 JSON 時,大於該安全範圍的數字會以字串攜帶。若改以裸的純 JSON 數字貼上這類數字,則會引發錯誤,因為它在本工具看到之前就已經喪失了精度。
我可以轉換 Set 與二進位值嗎?
從 DynamoDB JSON 轉到純 JSON 是可以的 — String/Number/Binary Set 會變成陣列,二進位值會變成 base64 字串。反向則無法推斷它們:純 JSON 沒有 Set 類型,因此陣列一律轉換為 List (L)。請直接在 DynamoDB JSON 那一側撰寫 Set 與二進位值。
我的資料會離開瀏覽器嗎?
不會。轉換完全在用戶端執行,使用官方的 AWS marshalling 函式庫,並在你的瀏覽器中按需載入。你貼上的任何內容都不會傳送到伺服器。