DynamoDB JSON Dönüştürücü
Düz JSON'u DynamoDB'nin attribute-value formatına ve geri dönüştür — anında, tarayıcında. Hiçbir şey bir sunucuya gönderilmez.
Düz JSON ve DynamoDB JSON
DynamoDB'nin düşük seviyeli wire formatı her değeri türüyle etiketler. Uygulamanın { "age": 36 } gördüğü yerde, API { "age": { "N": "36" } } görür. Bu attribute-value biçimi, AWS CLI'nin yazdırdığı, CloudWatch günlüklerinde ve DynamoDB Streams kayıtlarında görünen ve düşük seviyeli bir PutItem çağrısına yapıştırdığın şeydir. SDK'nın document client'ı bunu gizler, bu yüzden iki format hata ayıklama sırasında sürekli kesişir.
Bu dönüştürücü, AWS SDK'nın kullandığı marshalling kütüphanesinin aynısını kullanır, bu yüzden çıktı SDK'nın üreteceğiyle tam olarak eşleşir. Tamamen tarayıcında çalışır — kütüphane isteğe bağlı yüklenir ve verilerin sayfadan asla ayrılmaz — bu da bir production tablosundan gerçek item'ları yapıştırmayı güvenli kılar.
İki uç durum açıkça işlenir. JavaScript'in güvenli tamsayı aralığının üzerindeki sayılar sessizce yuvarlanmak yerine string olarak korunur ve hatalı biçimlendirilmiş attribute değerleri — örneğin sayısal olmayan metin taşıyan bir number türü — sessizce zorlanmak yerine açık bir hata oluşturur. Amaç, kayıplı bir yaklaşıklık değil, güvenebileceğin sadık bir dönüştürmedir.
Tür etiketlerinde yeni misin? DynamoDB veri türleri her attribute-value türünü örneklerle adım adım anlatır.
Sıkça sorulan sorular
DynamoDB JSON nedir?
DynamoDB JSON (attribute-value formatı) her değeri, türünü adlandıran tek anahtarlı bir nesneye sarar: bir string { "S": "abc" }, bir sayı { "N": "5" }, bir list { "L": [...] }, bir map { "M": {...} }'dir. Düşük seviyeli DynamoDB API'si ve AWS CLI gibi araçlar bu biçimi kullanırken, SDK document client'ı ve çoğu uygulama kodu düz JSON kullanır. Bu dönüştürücü ikisi arasında çeviri yapar.
Büyük sayım neden bir string'e dönüşüyor?
DynamoDB sayıları hassasiyet sınırı olmayan 38 basamaklı bir ondalık tür olarak saklar, ancak JavaScript 2^53'ün üzerinde hassasiyet kaybeder. Kayıpsız kalmak için, DynamoDB JSON düz JSON'a dönüştürülürken bu güvenli aralıktan büyük bir sayı bir string olarak taşınır. Böyle bir sayıyı bunun yerine çıplak bir düz JSON sayısı olarak yapıştırmak bir hata oluşturur, çünkü bu araç onu görmeden önce zaten hassasiyetini kaybetmiş olur.
Sets ve Binary değerlerini dönüştürebilir miyim?
DynamoDB JSON'dan düz JSON'a giderken evet — bir String/Number/Binary Set bir diziye ve bir Binary değeri bir base64 string'ine dönüşür. Ters yön bunları çıkaramaz: düz JSON'da Set türü yoktur, bu yüzden bir dizi her zaman bir List (L)'e dönüşür. Sets ve Binary'i doğrudan DynamoDB JSON tarafında yaz.
Verilerim tarayıcıdan ayrılıyor mu?
Hayır. Dönüştürme tamamen istemci tarafında, tarayıcında isteğe bağlı yüklenen resmi AWS marshalling kütüphanesi kullanılarak çalışır. Yapıştırdığın hiçbir şey bir sunucuya gönderilmez.