Also, if a JSON object within the value contains the same key more than once, all the key/value pairs are kept. jsonb also supports indexing, which can be a significant advantage.īecause the json type stores an exact copy of the input text, it will preserve semantically-insignificant white space between tokens, as well as the order of keys within JSON objects.
The json data type stores an exact copy of the input text, which processing functions must reparse on each execution while jsonb data is stored in a decomposed binary format that makes it slightly slower to input due to added conversion overhead, but significantly faster to process, since no reparsing is needed. The major practical difference is one of efficiency. The json and jsonb data types accept almost identical sets of values as input. To implement efficient query mechanisms for these data types, PostgreSQL also provides the jsonpath data type described in Section 8.14.7. PostgreSQL offers two types for storing JSON data: json and jsonb. There are also assorted JSON-specific functions and operators available for data stored in these data types see Section 9.16. Such data can also be stored as text, but the JSON data types have the advantage of enforcing that each stored value is valid according to the JSON rules. JSON data types are for storing JSON (JavaScript Object Notation) data, as specified in RFC 7159.