jsonb memorizza i dati in forma binaria scomposta, non come stringa ASCII/UTF-8, ma come codice binario. Ciò rende leggermente più lento l'inserimento, a causa dell'aggiunta di costi di conversione, ma significativamente più veloce l'elaborazione, poiché non è necessaria la rielaborazione.
jsonb supporta anche l'indicizzazione, il che può essere un vantaggio significativo.
jsonb non conserva gli spazi bianchi, non conserva l'ordine delle chiavi degli oggetti e non conserva le chiavi degli oggetti duplicate. Se nell'input vengono specificate chiavi duplicate, viene mantenuto solo l'ultimo valore.
Si raccomanda che le applicazioni memorizzino i dati di 'JSON come 'jsonb, a meno che non ci siano esigenze particolari, come ad esempio assunzioni di tipo legacy sull'ordinamento delle chiavi degli oggetti.
RFC 7159 consente alle stringhe 'JSON di contenere sequenze di escape Unicode indicate da '\uXXXX. La funzione di input per 'jsonb non consente l'escape Unicode per i caratteri non ASCII (quelli superiori a U+007F), a meno che la codifica del database non sia UTF8. jsonb rifiuta '\u0000. Il motivo è che '\u0000 non può essere rappresentato nel tipo di testo PostgreSQL's. jsonb insiste sul fatto che qualsiasi uso di coppie di surrogati Unicode per designare caratteri al di fuori del piano Unicode Basic Multilingual sia corretto. Gli escape Unicode validi vengono convertiti nel carattere ASCII o UTF8 equivalente per la memorizzazione; ciò include il ripiegamento delle coppie di surrogati in un singolo carattere.
Quando si converte l'input testuale 'JSON in 'jsonb, i tipi primitivi descritti da RFC 7159 sono effettivamente mappati sui tipi nativi di PostgreSQL. jsonb rifiuta i numeri che non rientrano nell'intervallo del tipo di dati numerico di PostgreSQL.