Kann DynamoDB JSON speichern?

Ja. DynamoDB kann JSON speichern, indem es das JSON auf seine Dokumenttypen abbildet: Map (M) für Objekte und List (L) für Arrays, bis zu 32 Ebenen tief verschachtelt. Jedes Item fasst bis zu 400 KB. DynamoDBs Typsystem ist eine Obermenge von JSON, jedes JSON-Dokument kann also als Item gespeichert und danach gefiltert, aktualisiert und gelesen werden.

Wie JSON auf DynamoDB-Typen abbildet

  • JSON-Objekt → Map (M)
  • JSON-Array → List (L)
  • String / Zahl / Boolean / null → S / N / BOOL / NULL

Listen und Maps können bis zu 32 Ebenen tief verschachteln, ein vollständiges JSON-Dokument wird also zu einem Item.

Die gespeicherte Größe ist kleiner als das JSON

Das typmarkierte Leitungsformat sieht verschwenderisch aus, und Leute nehmen an, sie würden dafür abgerechnet. Werden sie nicht. DynamoDB rechnet auf die Item-Größe ab, also die Summe aus jedem Attributnamen plus jedem Wert, ohne JSONs Anführungszeichen, Doppelpunkte, Kommas oder Klammern.

Ein Bestelldokument mit neun Attributen, einer verschachtelten Adresse, einem zweizeiligen Positions-Array und einer zweielementigen Tag-Liste misst sich auf drei verschiedene Arten:

MessungBytes
DynamoDB JSON, wie über die Leitung gesendet607
Dasselbe Dokument als schlichtes Minified-JSON447
Abgerechnete Item-Größe350

Das gespeicherte Item ist also 22 % kleiner als das JSON, mit dem du angefangen hast, und 42 % kleiner als der Request, der es getragen hat. Zahlen leisten den Großteil der Arbeit: 149.97 speichert in etwa 4 Bytes gegenüber 6 Textzeichen. Strings und Namen werden exakt gezählt; AWS dokumentiert die Zahlenkodierung als grob ein Byte pro zwei signifikanten Stellen — lies die 350 also als auf ein paar Bytes genau, nicht auf ein Byte.

Was dich sehr wohl kostet, ist die Benennung. Attributnamen und Map-Keys machen 148 dieser 350 Bytes aus, 42 % des Items, und du bezahlst sie bei jeder Kopie. shippingAddress über eine Milliarde Items hinweg zu addr zu kürzen ist eine echte Ersparnis. Du kannst jedes Dokument im Item-Size-Rechner bemessen, den wir gegen die eigene Abrechnungsgrenze der Engine geprüft haben: Items, die er bei 1.024 Bytes ansetzt, verbrauchen eine Write-Einheit, und 1.025 verbrauchen zwei.

Was JSON auf dem Roundtrip verliert

DynamoDB speichert Zahlen als Dezimalzahlen mit 38 Stellen Genauigkeit, eine JSON-Zahl wird also normalisiert statt bewahrt. Geschrieben und direkt zurückgelesen:

{"price": 19.90}             ->  {"price": {"N": "19.9"}}
{"qty": 1.0}                 ->  {"qty": {"N": "1"}}
{"limit": 1e5}               ->  {"limit": {"N": "100000"}}
{"id": 9007199254740993}     ->  {"id": {"N": "9007199254740993"}}

Die letzte Zeile ist die nützliche. DynamoDB behält die Ganzzahl exakt, und JSON.parse('{"id":9007199254740993}') in Node gibt dir 9007199254740992. Wenn IDs zählen, speichere sie als Strings.

Zwei JSON-Dokumente nimmt DynamoDB gar nicht erst an: einen leeren Key ({"": "x"} löst ValidationException: Empty attribute name aus, und dasselbe gilt innerhalb einer verschachtelten Map) und eine Zahl jenseits der Genauigkeitsgrenze, die ValidationException: DynamoDB only supports precision up to 38 digits auslöst.

Der eine Vorbehalt

DynamoDBs Typen sind eine Obermenge der Typen von JSON. Binary- (B) und Set-Attribute (SS/NS/BS) haben kein direktes JSON-Äquivalent, Sets serialisieren also zu Arrays und Binary zu base64, wenn du zurück in schlichtes JSON konvertierst.

Damit arbeiten

Du kannst direkt auf verschachtelten JSON-Attributen operieren — auf einem Map-Feld filtern, ein Listenelement aktualisieren — ohne das ganze Item neu zu schreiben.

Tiefer einsteigen

Siehe DynamoDB JSON und Marshalling und konvertiere zwischen schlichtem und DynamoDB-JSON mit dem JSON-Konverter. Lade DynoTable herunter, um JSON-Items visuell zu bearbeiten.

Referenzen

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Am 2026-07-28 gemessen und reproduziert. Die drei Byte-Zahlen stammen aus unserem eigenen Item-Size-Rechner und aus dem serialisierten Request; die Zahlen-Roundtrips und beide ValidationException-Strings sind wortgetreue Ausgabe von DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0, dessen Formulierungen vom Live-Dienst abweichen können.

Mit DynamoDB ohne die Console arbeiten

Ein schneller DynamoDB-Desktop-Client, der das echte SQL ausführt, das DynamoDB nicht kann — JOINs, GROUP BY, Aggregationen — mit visueller Bearbeitung und einem KI-Agenten auf deinen eigenen Bedrock-Schlüsseln.

30 Tage kostenlos testen, keine Kreditkarte — danach der Kostenlos-Tarif ohne Zeitlimit.