Skip to content

Instantly share code, notes, and snippets.

@reu
Created March 13, 2021 16:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save reu/07cfd78c10c2f51e270b67888aa78fee to your computer and use it in GitHub Desktop.
Save reu/07cfd78c10c2f51e270b67888aa78fee to your computer and use it in GitHub Desktop.
Serde double encoding JSON
mod as_json_string {
use serde::de::{Deserialize, DeserializeOwned, Deserializer};
use serde::ser::{Serialize, Serializer};
use serde_json;
pub fn serialize<T: Serialize, S: Serializer>(
value: &T,
serializer: S,
) -> Result<S::Ok, S::Error> {
let json = serde_json::to_string(value).map_err(serde::ser::Error::custom)?;
json.serialize(serializer)
}
pub fn deserialize<'de, T: DeserializeOwned, D: Deserializer<'de>>(
deserializer: D,
) -> Result<T, D::Error> {
let json = String::deserialize(deserializer)?;
serde_json::from_str(&json).map_err(serde::de::Error::custom)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment