While both classes share the same, thin client-side API, JsonB stores the data in a decomposed, binary format, whereas Json stores an exact copy of the RFC 7159 text.
This means that JsonB is slower to input, but faster to process as it avoids reparsing. Therefore, applications that utilize the structured state of a JSON value should prefer JsonB.
It also means that the JsonB stored representation does NOT preserve:
white space,
the order of object keys, or
duplicate object keys.
Note: JsonB is only applicable to PostgreSQL databases (i.e., those created using DatabaseDialect::POSTGRESQL).
Constructors
JsonB(JsonB const &)
Regular value type, supporting copy, assign, move.
Parameter
Name
Description
JsonB const &
JsonB(JsonB &&)
Regular value type, supporting copy, assign, move.
Parameter
Name
Description
JsonB &&
JsonB()
A null value.
JsonB(std::string)
Construction from a JSON-formatted string.
Note that there is no check here that the argument string is indeed well-formatted. Error detection will be delayed until the value is passed to Spanner.
Parameter
Name
Description
s
std::string
Operators
operator=(JsonB const &)
Regular value type, supporting copy, assign, move.
Parameter
Name
Description
JsonB const &
Returns
Type
Description
JsonB &
operator=(JsonB &&)
Regular value type, supporting copy, assign, move.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-22 UTC."],[[["\u003cp\u003eThis document outlines the \u003ccode\u003eJsonB\u003c/code\u003e class, which is a versioned component within the Google Cloud Spanner C++ library, with versions ranging from 2.11.0 up to the latest release candidate, 2.37.0-rc.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eJsonB\u003c/code\u003e is a variant of the \u003ccode\u003eJson\u003c/code\u003e class, optimized for faster processing by storing data in a binary format, as opposed to the text-based format used by \u003ccode\u003eJson\u003c/code\u003e, which makes \u003ccode\u003eJsonB\u003c/code\u003e more suitable for applications requiring structured JSON data manipulation.\u003c/p\u003e\n"],["\u003cp\u003eUnlike \u003ccode\u003eJson\u003c/code\u003e, \u003ccode\u003eJsonB\u003c/code\u003e does not preserve whitespace, object key order, or duplicate object keys in its stored representation.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eJsonB\u003c/code\u003e class is applicable only to PostgreSQL databases created using \u003ccode\u003eDatabaseDialect::POSTGRESQL\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eJsonB\u003c/code\u003e supports various constructors, including from a \u003ccode\u003eJsonB const &\u003c/code\u003e, a \u003ccode\u003eJsonB &&\u003c/code\u003e, a default null value, and a \u003ccode\u003estd::string\u003c/code\u003e, along with operators for assignment and conversion to a JSON-formatted string.\u003c/p\u003e\n"]]],[],null,[]]