use serde_json::Value;
use crate::{error::MavecError, result::Result};
pub fn to_vec(value: Value) -> Result<Vec<String>> {
if let Some(object) = value.as_object() {
let result: Vec<String> = object
.iter()
.flat_map(|(key, value)| {
let value_str = match value {
Value::Number(num) => num.to_string(),
Value::String(s) => s.clone(),
Value::Bool(b) => b.to_string(),
Value::Null => "null".to_string(),
_ => "".to_string(),
};
vec![key.clone(), value_str]
})
.collect();
return Ok(result);
}
if let Some(object) = value.as_array() {
let result: Vec<String> = object
.iter()
.flat_map(|key| {
let value_str = match key {
Value::Number(num) => num.to_string(),
Value::String(s) => s.clone(),
Value::Bool(b) => b.to_string(),
Value::Null => "null".to_string(),
_ => "".to_string(),
};
vec![value_str]
})
.collect();
return Ok(result);
}
Err(MavecError::JsonStructureParseError(
"Value could not be converted to Vec".to_string(),
))
}