Bisakah DynamoDB menyimpan JSON?

Ya. DynamoDB bisa menyimpan JSON dengan memetakannya ke tipe dokumennya: map (M) untuk objek dan list (L) untuk array, bersarang hingga 32 tingkat. Setiap item menampung hingga 400 KB. Sistem tipe DynamoDB adalah superset dari JSON, jadi dokumen JSON apa pun bisa disimpan sebagai item lalu difilter, diperbarui, dan dibaca.

Bagaimana JSON dipetakan ke tipe DynamoDB

  • Objek JSON → Map (M)
  • Array JSON → List (L)
  • string / number / boolean / null → S / N / BOOL / NULL

List dan map bisa bersarang hingga 32 tingkat, jadi satu dokumen JSON utuh menjadi satu item.

Ukuran tersimpan lebih kecil daripada JSON-nya

Format jaringan yang bertanda tipe itu terlihat boros, dan orang mengira mereka ditagih untuk itu. Tidak. DynamoDB menagih berdasarkan ukuran item, yaitu jumlah dari setiap nama atribut plus setiap nilai, tanpa satu pun tanda kutip, titik dua, koma, atau kurung kurawal milik JSON.

Sebuah dokumen order dengan sembilan atribut, sebuah alamat bersarang, array item dua baris, dan daftar tag dua elemen terukur dengan tiga cara berbeda:

PengukuranByte
DynamoDB JSON seperti dikirim di jaringan607
Dokumen yang sama sebagai JSON biasa447
Ukuran item yang ditagih350

Jadi item tersimpannya 22% lebih kecil daripada JSON yang Anda mulai, dan 42% lebih kecil daripada request yang membawanya. Angka melakukan sebagian besar pekerjaannya: 149.97 tersimpan dalam sekitar 4 byte melawan 6 karakter teks. String dan nama dihitung persis; AWS mendokumentasikan encoding angka sebagai kira-kira satu byte per dua digit signifikan, jadi bacalah 350 sebagai akurat dalam hitungan beberapa byte alih-alih satu byte.

Yang memang berbiaya adalah penamaan. Nama atribut dan key map menyumbang 148 dari 350 byte itu, 42% dari item-nya, dan Anda membayarnya pada setiap salinan. Memendekkan shippingAddress menjadi addr di seluruh satu miliar item adalah penghematan yang nyata. Anda bisa mengukur dokumen apa pun di kalkulator ukuran item, yang kami periksa terhadap batas penagihan mesinnya sendiri: item yang ia hitung sebagai 1.024 byte memakan satu write unit, dan 1.025 memakan dua.

Apa yang hilang dari JSON dalam perjalanan bolak-balik

DynamoDB menyimpan angka sebagai desimal dengan presisi 38 digit, jadi sebuah angka JSON dinormalisasi alih-alih dipertahankan. Ditulis lalu langsung dibaca kembali:

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

Baris terakhir itulah yang berguna. DynamoDB mempertahankan bilangan bulatnya persis, dan JSON.parse('{"id":9007199254740993}') di Node memberi Anda 9007199254740992. Kalau ID itu penting, simpan sebagai string.

Dua dokumen JSON yang sama sekali tak akan diterima DynamoDB: key kosong ({"": "x"} memunculkan ValidationException: Empty attribute name, dan hal yang sama berlaku di dalam map bersarang), dan angka yang melewati batas presisi, yang memunculkan ValidationException: DynamoDB only supports precision up to 38 digits.

Satu catatan penting

Tipe DynamoDB adalah superset dari tipe JSON. Atribut Binary (B) dan Set (SS/NS/BS) tak punya padanan JSON langsung, jadi set diserialisasi menjadi array dan biner menjadi base64 ketika Anda mengonversinya kembali ke JSON biasa.

Bekerja dengannya

Anda bisa mengoperasikan atribut JSON bersarang secara langsung — memfilter pada sebuah field map, memperbarui satu elemen list — tanpa menulis ulang seluruh item.

Pelajari lebih lanjut

Lihat DynamoDB JSON dan marshalling, dan konversikan antara JSON biasa dan DynamoDB JSON dengan konverter JSON. Unduh DynoTable untuk menyunting item JSON secara visual.

Referensi

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Diukur dan direproduksi 2026-07-28. Ketiga hitungan byte-nya berasal dari kalkulator ukuran item kami sendiri dan dari request yang diserialisasi; perjalanan bolak-balik angkanya dan kedua string ValidationException adalah keluaran apa adanya dari DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0, yang perumusan pesannya bisa berbeda dari layanan live.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.