jsonb almacena datos en un formato binario descompuesto; no como una serie ASCII/UTF-8, sino como código binario. Esto hace que sea ligeramente más lento en la entrada debido a la sobrecarga de conversión añadida, pero significativamente más rápido en el proceso, ya que no es necesario volver a analizar.
jsonb también proporciona soporte para a la indexación, lo que puede ser una ventaja significativa.
jsonb no conserva el espacio en blanco, no conserva el orden de las claves de objeto y no guarda las claves de objeto duplicadas. Si se especifican claves duplicadas en la entrada, sólo se conserva el último valor.
Se recomienda que las aplicaciones almacenen datos JSON como jsonb, a menos que haya necesidades bastante especializadas, como presuposiciones anteriores sobre la ordenación de claves de objeto.
La RFC 7159 permite que las series JSON contengan secuencias de escape Unicode, indicadas por \uXXXX. La función de entrada para jsonb no permite secuencias de escape Unicode para caracteres no ASCII (aquellos por encima de U + 007F) a menos que la codificación de base de datos sea UTF8. jsonb rechaza \u0000. La razón de que es \u0000 no se puede representar en el tipo de texto de PostgreSQL. Con jsonb se insiste en que cualquier uso de pares sustitutos Unicode para designar caracteres fuera del plano Unicode Basic Multilingual sea correcto. Las secuencias de escape Unicode válidas se convierten
al carácter ASCII o UTF8 equivalente para el almacenamiento; esto incluye pares subrogación doblados en un solo carácter.
Al convertir la entrada de JSON textual en jsonb, los tipos primitivos descritos por la recomendación RFC 7159 se correlacionan de forma efectiva con tipos PostgreSQL nativos. jsonb rechaza los números que están fuera del rango del tipo de datos numéricos de PostgreSQL.