aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2022-11-05 21:12:35 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2022-11-05 21:12:35 +0100
commit91cb5f7c85bb32f1689cc86d23292790c969ea48 (patch)
treea0b2b4ed67c18ff9f75e6b42a2b606b9e6586cf2
parentab9113dc7e91e97dda854d7ffc7d8a88a88555c1 (diff)
don't serialize None struct members at allserializer
-rw-r--r--src/util/map.rs20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/util/map.rs b/src/util/map.rs
index 5c75ef9..fac2062 100644
--- a/src/util/map.rs
+++ b/src/util/map.rs
@@ -71,8 +71,14 @@ where
where
T: ?Sized + serde::Serialize,
{
- serde::ser::SerializeMap::serialize_key(self, key)?;
- serde::ser::SerializeMap::serialize_value(self, value)?;
+ let mut nil_check = Vec::new();
+ value.serialize(ValueSerializer::new(&mut Writer::new(&mut nil_check)))?;
+
+ if !nil_check.is_empty() {
+ serde::ser::SerializeMap::serialize_key(self, key)?;
+ serde::ser::SerializeMap::serialize_value(self, value)?;
+ }
+
Ok(())
}
@@ -92,8 +98,14 @@ where
where
T: ?Sized + serde::Serialize,
{
- serde::ser::SerializeMap::serialize_key(self, key)?;
- serde::ser::SerializeMap::serialize_value(self, value)?;
+ let mut nil_check = Vec::new();
+ value.serialize(ValueSerializer::new(&mut Writer::new(&mut nil_check)))?;
+
+ if !nil_check.is_empty() {
+ serde::ser::SerializeMap::serialize_key(self, key)?;
+ serde::ser::SerializeMap::serialize_value(self, value)?;
+ }
+
Ok(())
}