use anyhow::{anyhow, Result};
use serde_json::Value;
pub fn get_keys(value: &Value) -> Result<Vec<String>> {
let mut keys = Vec::new();
if let Value::Object(map) = value {
for key in map.keys() {
keys.push(key.to_string());
}
} else {
return Err(anyhow!("Value is not an object"));
}
Ok(keys)
}
pub fn get_values(value: &Value) -> Result<Vec<Value>> {
let mut values = Vec::new();
if let Value::Object(map) = value {
for value in map.values() {
values.push(value.clone());
}
} else {
return Err(anyhow!("Value is not an object"));
}
Ok(values)
}
pub fn get_length(value: &Value) -> Result<usize> {
if let Value::Array(array) = value {
Ok(array.len())
} else {
Err(anyhow!("Value is not an array"))
}
}