diff --git a/src/database/de.rs b/src/database/de.rs index e082d8d5..f33ec08e 100644 --- a/src/database/de.rs +++ b/src/database/de.rs @@ -272,6 +272,12 @@ impl<'a, 'de: 'a> de::Deserializer<'de> for &'a mut Deserializer<'de> { { match name { | "$serde_json::private::RawValue" => visitor.visit_map(self), + | "Json" => visitor + .visit_newtype_struct(&mut serde_json::Deserializer::from_slice( + self.record_trail(), + )) + .map_err(|e| Self::Error::SerdeDe(format!("{name}: {e}").into())), + | "Cbor" => visitor .visit_newtype_struct(&mut minicbor_serde::Deserializer::new(self.record_trail())) .map_err(|e| Self::Error::SerdeDe(format!("{name}: {e}").into())), diff --git a/src/database/ser.rs b/src/database/ser.rs index 9cebfd89..ee6cad16 100644 --- a/src/database/ser.rs +++ b/src/database/ser.rs @@ -52,7 +52,7 @@ pub(crate) struct Serializer<'a, W: Write> { } /// Newtype for JSON serialization. -#[derive(Debug, Serialize)] +#[derive(Debug, Deserialize, Serialize)] pub struct Json(pub T); /// Newtype for CBOR serialization.