1use serde::{
3 de::{DeserializeOwned, Error as _},
4 ser::Error as _,
5 Deserialize, Deserializer, Serialize, Serializer,
6};
7
8pub fn serialize<T, S>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
10where
11 S: Serializer,
12 T: Serialize,
13{
14 serializer.serialize_str(&serde_json::to_string(value).map_err(S::Error::custom)?)
15}
16
17pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
19where
20 D: Deserializer<'de>,
21 T: DeserializeOwned,
22{
23 let json_str = String::deserialize(deserializer)?;
24 serde_json::from_str(&json_str).map_err(D::Error::custom)
25}