我尝试使用serde json反序列化来支持使用枚举的“choices”,但是它不工作(我有python枚举背景),假设我有这个json:
{"name": "content", "state": "open"}
并且state
可以是open
或closed
在python中,我只需要创建一个枚举,状态类型就是那个枚举,例如:
#[derive(Deserialize)]
enum State {
Open(String),
Closed(String),
}
#[derive(Deserialize)]
struct MyStruct {
name: String,
state: State,
}
问题是,我不知道如何将open
反串行化为State::Open
,以及将closed
反串行化为State::Closed
,我曾考虑过实现自己的反串行化器,但对我来说,它似乎非常复杂和先进。
有没有直接办法?
1条答案
按热度按时间nbnkbykc1#
你应该删除
String
,然后你会得到另一个错误:因为您的枚举变量使用的是PascalCase,而JSON使用的是camelCase(或者snake_case,我不知道)。