Module serde_with::rust::string_empty_as_none [−][src]
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.
Converting to serde_as
The same functionality can be more clearly expressed via NoneAsEmptyString
and using the serde_as
macro.
#[serde_as] #[derive(Deserialize)] struct A { #[serde_as(as = "NoneAsEmptyString")] value: Option<String>, }
Examples
#[derive(Deserialize, Serialize)] struct A { #[serde(with = "string_empty_as_none")] 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());
Functions
deserialize | Deserialize an |
serialize | Serialize a string from |