diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2022-11-05 21:12:35 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2022-11-05 21:12:35 +0100 |
commit | 91cb5f7c85bb32f1689cc86d23292790c969ea48 (patch) | |
tree | a0b2b4ed67c18ff9f75e6b42a2b606b9e6586cf2 | |
parent | ab9113dc7e91e97dda854d7ffc7d8a88a88555c1 (diff) |
don't serialize None struct members at allserializer
-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(()) } |