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.
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
sourceimpl<'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,
sourcefn 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.
sourceimpl<T> SerializeAs<Option<T>> for NoneAsEmptyStringwhere
T: Display,
impl<T> SerializeAs<Option<T>> for NoneAsEmptyStringwhere
T: Display,
sourcefn serialize_as<S>(source: &Option<T>, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Option<T>, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Serialize this value into the given Serde serializer.
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
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more