PostgreSQL, JSON verilerini depolamak için iki tür sunar: jsonve jsonb. Bu veri türleri için etkili sorgulama mekanizmaları uygulamak için PostgreSQL, Bölüm 8.14.6'da açıklanan jsonpath veri türünü de sağlar .
jsonVe jsonbveri türleri girdi olarak değerlerin hemen hemen aynı setleri kabul ediyoruz. En büyük pratik fark verimliliktir.
jsonVeri tipi depolar işleme fonksiyonları her yürütme yeniden ayrıştırma gereken giriş metin, tam bir kopyası; ederken jsonbveriler saklanır hiçbir yeniden çözümleme gerekli olduğundan, önemli ölçüde daha hızlı sürecine ikili dolayı eklenen dönüşüm yükü biraz daha yavaş girişine yapar biçimi, ancak çürümüş. jsonbAyrıca, önemli bir avantaj olabilecek dizin oluşturmayı da destekler.
Çünkü jsontip depolar tam giriş metninin kopyalamak, bu anlamsal-önemsiz beyaz jeton arasındaki boşluğu, hem de JSON nesneleri içindeki tuşların düzeni koruyacaktır. Ayrıca, değer içindeki bir JSON nesnesi birden fazla aynı anahtarı içeriyorsa, tüm anahtar / değer çiftleri korunur. (İşleme işlevleri son değeri etkin olarak kabul eder.) Aksine, jsonbbeyaz alanı korumaz, nesne anahtarlarının sırasını korumaz ve yinelenen nesne anahtarlarını tutmaz. Girişte yinelenen tuşlar belirtilirse, yalnızca son değer korunur.
Genel olarak, çoğu uygulama jsonbnesne anahtarlarının sıralanması ile ilgili eski varsayımlar gibi oldukça özel ihtiyaçlar olmadıkça JSON verilerini depolamayı tercih etmelidir
.
PostgreSQL veritabanı başına sadece bir karakter seti kodlamasına izin verir. Bu nedenle, veritabanı kodlaması UTF8 olmadığı sürece JSON tiplerinin JSON spesifikasyonuna tam olarak uyması mümkün değildir. Veritabanı kodlamasında temsil edilemeyen karakterleri doğrudan ekleme girişimleri başarısız olur; tersine, veritabanı kodlamasında temsil edilebilecek ancak UTF8'de gösterilemeyen karakterlere izin verilecektir.