pub fn deserialize_untagged_enum_case_insensitive<'de, T, D>(
deserializer: D,
) -> Result<T, D::Error>where
T: Deserialize<'de>,
D: Deserializer<'de>,
Expand description
Serde case-insensitive deserializer for an untagged enum
.
This function converts values to lowercase before deserializing as the enum
. Requires the
#[serde(rename_all = "lowercase")]
attribute to be set on the enum
.
ยงExample
In example below, the following JSON values all deserialize to
GroceryBasket { fruit_item: Fruit::Banana }
:
{"fruit_item": "banana"}
{"fruit_item": "BANANA"}
{"fruit_item": "Banana"}
Note: this example does not compile automatically due to Rust issue #29286.
use serde::Deserialize;
#[derive(Deserialize)]
#[serde(rename_all = "lowercase")]
enum Fruit {
Apple,
Banana,
Orange,
}
#[derive(Deserialize)]
struct GroceryBasket {
#[serde(deserialize_with = "helpers::deserialize_untagged_enum_case_insensitive")]
fruit_item: Fruit,
}