diff options
-rw-r--r-- | src/util/map.rs | 20 |
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(()) } |