無料ツール

DynamoDB JSON コンバーター

プレーンな JSON を DynamoDB の属性値形式に、またその逆に変換します — すぐに、ブラウザ内で。サーバーには何も送信されません。

プレーンな JSON
{
  "pk": "USER#1234",
  "sk": "PROFILE",
  "name": "Ada Lovelace",
  "age": 36,
  "scores": [10, 20, 30],
  "active": true
}

文字列セット、数値セット、バイナリセット、バイナリ値はプレーンな JSON では表現できません。JSON 配列は常にリスト (L) に変換されます。これらの型は DynamoDB JSON をプレーンな JSON に戻すときにのみ現れます。

DynamoDB JSON
コンバーターを読み込み中…

プレーンな 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 ライブラリを使い、完全にクライアント側で実行されます。貼り付けた内容がサーバーに送信されることはありません。

Console なしで DynamoDB を扱う

DynoTable は DynamoDB 向けの高速なデスクトップクライアントです — テーブルを閲覧し、SQL スタイルのクエリを実行し、アイテムをローカルで編集できます。