From 63bdeb79c946b2e3db6ac2d7f6af0603eb9dcafe Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Tue, 30 Dec 2025 04:51:24 +0000 Subject: [PATCH] Add newtype deserialization for Json(_) for parity with Cbor(_). Signed-off-by: Jason Volk --- src/database/de.rs | 6 ++++++ src/database/ser.rs | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) 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.