1use crate::error::Error;
3use serde_json::Value;
4
5pub fn get_keys(value: &Value) -> Result<Vec<String>, Error> {
7 if let Value::Object(map) = value {
8 Ok(map.keys().cloned().collect())
9 } else {
10 Err(Error::custom("Value is not an object."))
11 }
12}
13
14pub fn get_values(value: &Value) -> Result<Vec<Value>, Error> {
16 if let Value::Object(map) = value {
17 Ok(map.values().cloned().collect::<Vec<_>>())
18 } else {
19 Err(Error::custom("Value is not an object."))
20 }
21}
22
23pub fn get_length(value: &Value) -> Result<usize, Error> {
25 if let Value::Array(array) = value {
26 Ok(array.len())
27 } else if let Value::Object(map) = value {
28 Ok(map.len())
29 } else {
30 Err(Error::custom("Value is not an array."))
31 }
32}