webull_rs/utils/
serialization.rs1use crate::error::{WebullError, WebullResult};
2use serde::{Deserialize, Serialize};
3use serde_json::{json, Value};
4
5pub fn to_json<T>(value: &T) -> WebullResult<String>
7where
8 T: Serialize,
9{
10 serde_json::to_string(value).map_err(|e| WebullError::SerializationError(e))
11}
12
13pub fn from_json<T>(json: &str) -> WebullResult<T>
15where
16 T: for<'de> Deserialize<'de>,
17{
18 serde_json::from_str(json).map_err(|e| WebullError::SerializationError(e))
19}
20
21pub fn to_json_value<T>(value: &T) -> WebullResult<Value>
23where
24 T: Serialize,
25{
26 serde_json::to_value(value).map_err(|e| WebullError::SerializationError(e))
27}
28
29pub fn from_json_value<T>(value: Value) -> WebullResult<T>
31where
32 T: for<'de> Deserialize<'de>,
33{
34 serde_json::from_value(value).map_err(|e| WebullError::SerializationError(e))
35}
36
37pub fn build_json_object(params: &[(&str, Value)]) -> Value {
39 let mut obj = json!({});
40
41 for (key, value) in params {
42 obj[key] = value.clone();
43 }
44
45 obj
46}