Extract scalar values at a JSON path for secondary indexing.
(doc: &serde_json::Value, path: &str, is_array: bool)
| 11 | |
| 12 | /// Extract scalar values at a JSON path for secondary indexing. |
| 13 | pub fn extract_index_values(doc: &serde_json::Value, path: &str, is_array: bool) -> Vec<String> { |
| 14 | let path = normalize_path(path); |
| 15 | let target = navigate_json(doc, path); |
| 16 | |
| 17 | match target { |
| 18 | Some(serde_json::Value::Array(arr)) if is_array => { |
| 19 | arr.iter().filter_map(json_scalar_to_string).collect() |
| 20 | } |
| 21 | Some(val) => json_scalar_to_string(val).into_iter().collect(), |
| 22 | None => Vec::new(), |
| 23 | } |
| 24 | } |
| 25 | |
| 26 | /// Extract values from an rmpv::Value at a path. |
| 27 | pub(crate) fn extract_index_values_rmpv( |
no test coverage detected