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§
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<T> SerializeAs<Option<T>> for NoneAsEmptyStringwhere
T: Display,
impl<T> SerializeAs<Option<T>> for NoneAsEmptyStringwhere
T: Display,
source§fn 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.