DynamoDB JSON コンバーター
プレーンな JSON を DynamoDB の属性値形式に、またその逆に変換します — すぐに、ブラウザ内で。サーバーには何も送信されません。
プレーンな JSON と DynamoDB JSON の比較
DynamoDB の低レベルなワイヤー形式は、すべての値にその型のタグを付けます。アプリケーションが { "age": 36 } と見るところを、API は { "age": { "N": "36" } } と見ます。その属性値の形は、AWS CLI が出力するもの、CloudWatch のログや DynamoDB Streams のレコードに現れるもの、そして低レベルの PutItem 呼び出しに貼り付けるものです。SDK のドキュメントクライアントはこれを隠すため、デバッグ中は2つの形式が絶えず交差します。
このコンバーターは AWS SDK が使うのと同じ marshalling ライブラリを使うため、出力は SDK が生成するものと正確に一致します。完全にブラウザ内で実行され — ライブラリは必要に応じて読み込まれ、データがページの外に出ることはありません — そのため本番テーブルの実際のアイテムを貼り付けても安全です。
2つのエッジケースが明示的に処理されます。JavaScript の安全な整数範囲を超える数値は、暗黙に丸められるのではなく文字列として保持されます。また、不正な属性値 — 例えば数値型が数値でないテキストを持つ場合 — は、静かに強制変換されるのではなく明確なエラーを発生させます。目標は、ロスのある近似ではなく、信頼できる忠実な変換です。
型タグは初めてですか? DynamoDB のデータ型 では、すべての属性値の型を例とともに解説しています。
よくある質問
DynamoDB JSON とは何ですか?
DynamoDB JSON(属性値形式)は、すべての値を型名を持つ1キーのオブジェクトで包みます。文字列は { "S": "abc" }、数値は { "N": "5" }、リストは { "L": [...] }、マップは { "M": {...} } です。低レベルの DynamoDB API や AWS CLI のようなツールはこの形を使い、SDK のドキュメントクライアントやほとんどのアプリケーションコードはプレーンな JSON を使います。このコンバーターは両者を相互に変換します。
大きな数値が文字列になるのはなぜですか?
DynamoDB は数値を精度制限のない38桁の10進数型として保存しますが、JavaScript は 2^53 を超えると精度を失います。ロスレスを保つため、その安全な範囲を超える数値は DynamoDB JSON をプレーンな JSON に変換するときに文字列として扱われます。逆にそのような数値をそのままプレーンな JSON の数値として貼り付けるとエラーになります。このツールが受け取る前にすでに精度を失っているからです。
セットやバイナリ値を変換できますか?
DynamoDB JSON からプレーンな JSON へなら可能です — 文字列/数値/バイナリセットは配列になり、バイナリ値は base64 文字列になります。逆方向では推測できません。プレーンな JSON にはセット型がないため、配列は常にリスト (L) に変換されます。セットとバイナリは DynamoDB JSON 側で直接記述してください。
私のデータはブラウザの外に出ますか?
いいえ。変換は、ブラウザで必要に応じて読み込まれる公式の AWS marshalling ライブラリを使い、完全にクライアント側で実行されます。貼り付けた内容がサーバーに送信されることはありません。