MCPcopy Create free account
hub / github.com/douglance/devsql / json_value_to_glue_value

Function json_value_to_glue_value

crates/ccql/src/sql/composite_storage.rs:486–509  ·  view source on GitHub ↗

Convert serde_json Value to GlueSQL Value

(value: &JsonValue)

Source from the content-addressed store, hash-verified

484
485/// Convert serde_json Value to GlueSQL Value
486fn json_value_to_glue_value(value: &JsonValue) -> Value {
487 match value {
488 JsonValue::Null => Value::Null,
489 JsonValue::Bool(b) => Value::Bool(*b),
490 JsonValue::Number(n) => {
491 if let Some(i) = n.as_i64() {
492 Value::I64(i)
493 } else if let Some(f) = n.as_f64() {
494 Value::F64(f)
495 } else {
496 Value::Str(n.to_string())
497 }
498 }
499 JsonValue::String(s) => Value::Str(s.clone()),
500 JsonValue::Array(arr) => Value::List(arr.iter().map(json_value_to_glue_value).collect()),
501 JsonValue::Object(obj) => {
502 let map: BTreeMap<String, Value> = obj
503 .iter()
504 .map(|(k, v)| (k.clone(), json_value_to_glue_value(v)))
505 .collect();
506 Value::Map(map)
507 }
508 }
509}
510
511/// Convert a vector of rows to a RowIter (pinned boxed stream)
512fn rows_to_iter(rows: Vec<(Key, DataRow)>) -> RowIter<'static> {

Callers 4

flatten_usage_columnsFunction · 0.85
todo_json_to_data_rowFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected