pub struct Jsonb;
postgres_backend
only.Expand description
The jsonb
SQL type. This type can only be used with feature = "serde_json"
jsonb
offers several advantages over regular JSON:
There are two JSON data types:
json
andjsonb
. They accept almost identical sets of values as input. The major practical difference is one of efficiency. Thejson
data type stores an exact copy of the input text, which processing functions must reparse on each execution; whilejsonb
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.jsonb
also supports indexing, which can be a significant advantage.…In general, most applications should prefer to store JSON data as
jsonb
, unless there are quite specialized needs, such as legacy assumptions about ordering of object keys.
§ToSql
impls
§FromSql
impls
§Examples
table! {
contacts {
id -> Integer,
name -> VarChar,
address -> Jsonb,
}
}
let santas_address: serde_json::Value = serde_json::from_str(r#"{
"street": "Article Circle Expressway 1",
"city": "North Pole",
"postcode": "99705",
"state": "Alaska"
}"#)?;
let inserted_address = insert_into(contacts)
.values((name.eq("Claus"), address.eq(&santas_address)))
.returning(address)
.get_result::<serde_json::Value>(connection)?;
assert_eq!(santas_address, inserted_address);
Trait Implementations§
source§impl<'expr2, 'expr> AsExpression<Jsonb> for &'expr2 &'expr Value
Available on crate feature serde_json
and (crate features postgres_backend
or mysql_backend
) only.
impl<'expr2, 'expr> AsExpression<Jsonb> for &'expr2 &'expr Value
serde_json
and (crate features postgres_backend
or mysql_backend
) only.§type Expression = Bound<Jsonb, &'expr2 &'expr Value>
type Expression = Bound<Jsonb, &'expr2 &'expr Value>
source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
source§impl<'expr> AsExpression<Jsonb> for &'expr Value
Available on crate feature serde_json
and (crate features postgres_backend
or mysql_backend
) only.
impl<'expr> AsExpression<Jsonb> for &'expr Value
serde_json
and (crate features postgres_backend
or mysql_backend
) only.§type Expression = Bound<Jsonb, &'expr Value>
type Expression = Bound<Jsonb, &'expr Value>
source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
source§impl AsExpression<Jsonb> for Value
Available on crate feature serde_json
and (crate features postgres_backend
or mysql_backend
) only.
impl AsExpression<Jsonb> for Value
serde_json
and (crate features postgres_backend
or mysql_backend
) only.§type Expression = Bound<Jsonb, Value>
type Expression = Bound<Jsonb, Value>
source§fn as_expression(self) -> Self::Expression
fn as_expression(self) -> Self::Expression
source§impl HasSqlType<Jsonb> for Pg
impl HasSqlType<Jsonb> for Pg
source§fn metadata(_: &mut Self::MetadataLookup) -> PgTypeMetadata
fn metadata(_: &mut Self::MetadataLookup) -> PgTypeMetadata
source§impl QueryId for Jsonb
impl QueryId for Jsonb
source§const HAS_STATIC_QUERY_ID: bool = true
const HAS_STATIC_QUERY_ID: bool = true
Self
be uniquely identified by its type? Read more