データベース・SQLツール

DynamoDB JSON変換

方向と入力の構造を選び、型を保持するか通常JSONにするかを決めてください。

DynamoDB JSON変換

入力JSON

結果JSON

処理はブラウザー内で完結し、入力は送信されません。

変換オプション

保持モードは独自の$ddbマーカーを使います。$ddb.Mはマーカーと同じ形の実際のマップをエスケープします。

上限:入力500,000文字、50,000ノード、文書32階層、出力2,000,000文字。

結果は更新されていません。現在の入力を変換してください。

DynamoDB JSON変換は、CLIや低レベルAPIから取り出した値をテストデータとして読み直すときに使えます。S、N、Mといったデータ型記述子を単純に消すと、数値と文字列、リストとセットの違いまで消える場合があります。まず項目全体なのか単一属性なのかを確認してください。

DynamoDB JSONと通常JSONの相互変換は、SDKでいうmarshallとunmarshallに相当する型の対応付けです。転送時に文字列となる数値も数値として扱い、順序付きリストと集合は区別します。レスポンスの外枠を自動で削除しないため、Itemという実際の属性名もそのまま扱えます。

DynamoDB JSON変換で確認できること

大きな整数を文字列に変えない

DynamoDB JSON変換では、数値をJavaScriptのNumberに通さず字句として読み取ります。9007199254740993は同じ桁のまま、引用符のないJSON数値として出力されます。小数の有効桁数と指数範囲も十進数の計算で検査します。

長い数値を表す色付きのブロック列が、変換ゲートを通過しても変わらず並んでいる。

往復に必要な型の手掛かりを残す

保持モードはセットとバイナリに明示的な$ddbマーカーを付けます。通常モードは配列とBase64文字列を出力し、変化した型のパスを一覧で示します。読みやすさを選んだ結果から元の型を推定できるとは限らないことを、その場で確認できます。

型の印が付いた集合は可逆経路で印を保持し、通常経路では印のない配列になる。

入力の外枠と受け取り側を確認する

01

Itemの中身かItems配列を選ぶ

GetItemの結果ならItemの値をコピーして項目マップを選択します。クエリのItems配列ならバッチを選びます。{"N":"42"}だけを変換する場合は単一値です。属性名から入力形態を推測しないため、選択と内容を合わせてください。

02

戻す予定があれば型を保持する

このページで逆変換する予定なら既定の保持モードを使います。受け取り側が通常JSONだけを扱うなら通常モードにして、型変更の全パスを確認します。普通の配列はL、文字列はSとなり、中身が似ていてもセットやバイナリにはなりません。

03

更新済みの結果だけを保存する

入力や方向、構造、字下げを変えるとコピーと保存がすぐ無効になります。自動処理は350ミリ秒後に更新し、無効にすると変換ボタンとCtrl/Cmd + Enterが使えます。サンプルと消去はプレビュー後に適用し、元に戻すと両欄の状態が復元されます。

属性の型と入れ子をまとめて検証

十種類のデータ型記述子

S、N、B、BOOL、NULL、M、L、SS、NS、BSを扱います。リストは異なる型を混在でき、空文字列、空バイナリ、空マップ、空リストも保持します。NULLはnullになり、属性そのものを削除することはありません。

バッチ全体を一つの結果として扱う

項目マップの配列を一括変換できます。一件でも不正な値があれば全体の出力を止め、不正なレコードを飛ばしません。S、N、Item、Itemsという実際の属性名が自動判定によって失われることもありません。

数値集合は値で重複を検査

最大38桁の有効数字と非ゼロ値の範囲を確認します。NSの1と1.0は同じ値です。文字列集合は文字列で、バイナリ集合はデコード後のバイトで比較し、空集合と重複はエラーにします。自動で整理して成功扱いにはしません。

エラー行と型変更のパスを表示

構文と型のエラーには入力のパス、行、列を示し、エディターの該当行を強調します。通常モードの型変更一覧は50件ずつ表示できます。コピーとJSON保存は、画面に見えている件数に関係なく現在の完全な結果を出力します。

変換できる範囲と元に戻せない情報

マーカーはこのツール独自の約束
保持モードは値の位置に{"$ddb":{"SS":["red"]}}を置き、B、NS、BSも同様です。実際のマップが$ddbだけを持つ場合は、元の属性マップを$ddb.Mで包み衝突を防ぎます。AWSの転送形式ではないので、AttributeValueを送る前に逆変換が必要です。
通常の配列には集合の型がない
配列だけでは元がL、SS、NS、BSのどれか分かりません。Base64に見える文字列もBとは限りません。通常モードは変更箇所を示し、逆変換ではLとSを生成します。このモードでは$ddbも通常のオブジェクトのキーです。
後段のパーサーにも精度が必要
このページは正確な数値テキストを出力しますが、後段のJavaScriptでJSON.parseすると大きな整数が丸められることがあります。有効数字は38桁まで、非ゼロの絶対値は1e-130以上、1e126未満の最大38桁値以下です。Nの特殊な十進表記は正確に正規化します。
入力の大きさと構文を制限
入力は500,000個のUTF-16コード単位と50,000構文ノードまで、文書のコンテナーは32階層、出力は2,000,000文字までです。重複キー、空や重複の集合、不正なBase64、単独サロゲートを拒否します。切り詰めや自動修復は行いません。
テーブルへの書き込みは検証しない
ItemやItems、Streamsの外枠は自動抽出せず、JSONLやS3のエクスポート行も直接は読みません。AWS接続、URL取得、ファイル送信、書き込み機能はありません。テーブルのキー、索引、実際の400KB保存サイズは別途確認が必要です。

DynamoDB JSON変換のよくある質問

DynamoDB JSONを通常のJSONオブジェクトに変換するには?

DynamoDB → JSONと項目マップを選び、各プロパティーがAttributeValueのオブジェクトを入力します。{"S":"text"}だけなら単一値を選びます。通常JSONで表せないセットやバイナリには、保持モードでマーカーが付く点を確認してください。

大きな数値が文字列になるのはなぜですか?

一部の変換器は浮動小数点の丸めを避けるため、大きな数を引用符で囲みます。このツールは引用符を加えず、数値の字句と十進数の検証を使います。出力された数値の桁は正確ですが、受け取り側も精度を保持できる読み込み方法を使う必要があります。

セットとバイナリ値も変換できますか?

はい。B、SS、NS、BSを検証し、既定では型マーカーを残します。通常JSONを選ぶと文字列や配列になり、影響を受けるパスが表示されます。その通常結果を逆変換しても、元の特殊な型を推定することはできません。

テーブル全体のエクスポートを変換できますか?

上限内の項目マップ配列ならバッチモードで変換できます。AWS S3の全体エクスポートは通常、Itemで包まれたJSONLなので直接は対応しません。必要な項目を配列に整理してから入力してください。不正な項目があれば全体を停止します。

AWS CLIのクエリ結果を読みやすいJSONにするには?

レスポンスのItemの値かItems配列を取り出し、それに合う形態を選んでください。応答のメタデータや不要なフィールドは自動削除しません。低レベルAPIへ渡すためのデータを作る場合は、JSON → DynamoDBへ切り替えて型付き属性値を得られます。

型の扱いで不明な点がありますか?

サンプルで型の違いを確認

DynamoDB JSON変換の混合型サンプルを試し、次のアプリケーションが受け取れる形式を選んでください。