Skip to main content

json_extract_integer

Function json_extract_integer 

Source
pub fn json_extract_integer<J: JsonOrNullableJsonOrJsonbOrNullableJsonb + SingleValue, json, text>(
    json: json,
    text: text,
) -> json_extract_integer<J, json, text>
where json: AsExpression<J>, text: AsExpression<Text>,
Available on crate feature __sqlite-shared only.
Expand description

Extracts an integer value from a well-formed JSON document at the given path.

Returns NULL if the path does not exist in the JSON document, or if the value at that path is a JSON null.

To extract other types, use:

This function requires at least SQLite 3.9 or newer.

ยงExample


let json = json!({"a": 2, "c": [4, 5, {"f": 7}]});
let result = diesel::select(json_extract_integer::<Json, _, _>(json, "$.c[2].f"))
    .get_result::<Option<i32>>(connection)?;
assert_eq!(Some(7), result);

let json = json!({"a": 3.7});
let result = diesel::select(json_extract_integer::<Json, _, _>(json, "$.a"))
    .get_result::<Option<i32>>(connection)?;
assert_eq!(Some(3), result);

let result = diesel::select(json_extract_integer::<Nullable<Json>, _, _>(None::<Value>, "$.a"))
    .get_result::<Option<i32>>(connection)?;
assert!(result.is_none());

let json = json!({"a": 2});
let result = diesel::select(json_extract_integer::<Json, _, _>(json, "$.x"))
    .get_result::<Option<i32>>(connection)?;
assert!(result.is_none());