我有一个类似于下面的枚举:
#[derive(Deserialize)]
enum ExampleEnum {
#[serde(rename = "variant1-rename")]
Variant1,
#[serde(rename = "variant2-rename")]
Variant2,
Other(String),
}
它应该像这样反序列化:
Serialized | Deserialized |
---|---|
"variant1-rename" |
ExampleEnum::Variant1 |
"variant2-rename" |
ExampleEnum::Variant2 |
"foobar" |
ExampleEnum::Other("foobar") |
在我当前的代码中,前两个代码按预期工作,但最后一个没有,程序错误地指出它应该是"varant1-rename"、"varant2-rename"或"ther".
#[serde(other)]
属性似乎会产生所需的行为,但它只能与内部标记或相邻标记的枚举一起使用.
我要反序列化的(JSON)数据有一个应该反序列化为枚举的属性,因此它将如下所示:
{
"property": "variant1-rename"
}