Struct serde_with::NoneAsEmptyString
source · pub struct NoneAsEmptyString;
Expand description
De/Serialize a Option<String>
type while transforming the empty string to None
Convert an Option<T>
from/to string using FromStr
and AsRef<str>
implementations.
An empty string is deserialized as None
and a None
vice versa.
The same functionality is also available as serde_with::rust::string_empty_as_none
compatible with serde’s with-annotation.
Examples
#[serde_as]
#[derive(Deserialize, Serialize)]
struct A {
#[serde_as(as = "NoneAsEmptyString")]
tags: Option<String>,
}
let v: A = serde_json::from_value(json!({ "tags": "" })).unwrap();
assert_eq!(None, v.tags);
let v: A = serde_json::from_value(json!({ "tags": "Hi" })).unwrap();
assert_eq!(Some("Hi".to_string()), v.tags);
let x = A {
tags: Some("This is text".to_string()),
};
assert_eq!(json!({ "tags": "This is text" }), serde_json::to_value(&x).unwrap());
let x = A {
tags: None,
};
assert_eq!(json!({ "tags": "" }), serde_json::to_value(&x).unwrap());
Trait Implementations§
source§impl Clone for NoneAsEmptyString
impl Clone for NoneAsEmptyString
source§fn clone(&self) -> NoneAsEmptyString
fn clone(&self) -> NoneAsEmptyString
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for NoneAsEmptyString
impl Debug for NoneAsEmptyString
source§impl Default for NoneAsEmptyString
impl Default for NoneAsEmptyString
source§fn default() -> NoneAsEmptyString
fn default() -> NoneAsEmptyString
Returns the “default value” for a type. Read more
source§impl<'de, Str> DeserializeAs<'de, Option<Str>> for NoneAsEmptyStringwhere
Str: FromStr,
Str::Err: Display,
impl<'de, Str> DeserializeAs<'de, Option<Str>> for NoneAsEmptyStringwhere Str: FromStr, Str::Err: Display,
source§fn deserialize_as<D>(deserializer: D) -> Result<Option<Str>, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Option<Str>, D::Error>where D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer.
source§impl<AsRefStr> SerializeAs<Option<AsRefStr>> for NoneAsEmptyStringwhere
AsRefStr: AsRef<str>,
impl<AsRefStr> SerializeAs<Option<AsRefStr>> for NoneAsEmptyStringwhere AsRefStr: AsRef<str>,
source§fn serialize_as<S>(
source: &Option<AsRefStr>,
serializer: S
) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>( source: &Option<AsRefStr>, serializer: S ) -> Result<S::Ok, S::Error>where S: Serializer,
Serialize this value into the given Serde serializer.
impl Copy for NoneAsEmptyString
Auto Trait Implementations§
impl RefUnwindSafe for NoneAsEmptyString
impl Send for NoneAsEmptyString
impl Sync for NoneAsEmptyString
impl Unpin for NoneAsEmptyString
impl UnwindSafe for NoneAsEmptyString
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more