aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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(())
}