Convert serde_json Value to GlueSQL Value
(value: &JsonValue)
| 484 | |
| 485 | /// Convert serde_json Value to GlueSQL Value |
| 486 | fn 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) |
| 512 | fn rows_to_iter(rows: Vec<(Key, DataRow)>) -> RowIter<'static> { |
no outgoing calls
no test coverage detected