ai_sdk_provider/
json_value.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7#[serde(untagged)]
8pub enum JsonValue {
9 Null,
11 Bool(bool),
13 Number(serde_json::Number),
15 String(String),
17 Array(Vec<JsonValue>),
19 Object(JsonObject),
21}
22
23pub type JsonObject = HashMap<String, JsonValue>;
25
26pub type JsonArray = Vec<JsonValue>;
28
29#[cfg(test)]
30mod tests {
31 use super::*;
32
33 #[test]
34 fn test_json_value_roundtrip() {
35 let json = r#"{"key": "value", "number": 42, "array": [1, 2, 3]}"#;
36 let value: JsonValue = serde_json::from_str(json).unwrap();
37 let serialized = serde_json::to_string(&value).unwrap();
38 let deserialized: JsonValue = serde_json::from_str(&serialized).unwrap();
39 assert_eq!(value, deserialized);
40 }
41}