Function json_quote

Source
pub fn json_quote<J: SqlType + SingleValue, j>(j: j) -> json_quote<J, j>
where j: AsExpression<J>,
Available on crate feature sqlite only.
Expand description

The json_quote(X) function converts the SQL value X (a number or a string) into its corresponding JSON representation. If X is a JSON value returned by another JSON function, then this function is a no-op.

§Example


let version = diesel::select(sql::<Text>("sqlite_version();"))
        .get_result::<String>(connection)?;

// Querying SQLite version should not fail.
let version_components: Vec<&str> = version.split('.').collect();
let major: u32 = version_components[0].parse().unwrap();
let minor: u32 = version_components[1].parse().unwrap();
let patch: u32 = version_components[2].parse().unwrap();

if major > 3 || (major == 3 && minor >= 38) {
    /* Valid sqlite version, do nothing */
} else {
    println!("SQLite version is too old, skipping the test.");
    return Ok(());
}
let result = diesel::select(json_quote::<Integer, _>(42))
    .get_result::<Value>(connection)?;
assert_eq!(json!(42), result);

let result = diesel::select(json_quote::<Text, _>("verdant"))
    .get_result::<Value>(connection)?;
assert_eq!(json!("verdant"), result);

let result = diesel::select(json_quote::<Text, _>("[1]"))
    .get_result::<Value>(connection)?;
assert_eq!(json!("[1]"), result);

let result = diesel::select(json_quote::<Nullable<Text>, _>(None::<&str>))
    .get_result::<Value>(connection)?;
assert_eq!(json!(null), result);

let result = diesel::select(json_quote::<Double, _>(3.14159))
    .get_result::<Value>(connection)?;
assert_eq!(json!(3.14159), result);

let result = diesel::select(json_quote::<Json, _>(json!([1])))
    .get_result::<Value>(connection)?;