ruma_common/serde/
json_string.rs1use serde::{
5 de::{DeserializeOwned, Deserializer, Error as _},
6 ser::{Error as _, Serialize, Serializer},
7};
8
9pub fn serialize<T, S>(value: T, serializer: S) -> Result<S::Ok, S::Error>
11where
12 T: Serialize,
13 S: Serializer,
14{
15 let json = serde_json::to_string(&value).map_err(S::Error::custom)?;
16 serializer.serialize_str(&json)
17}
18
19pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
21where
22 T: DeserializeOwned,
23 D: Deserializer<'de>,
24{
25 let s = super::deserialize_cow_str(deserializer)?;
26 serde_json::from_str(&s).map_err(D::Error::custom)
27}