小编dud*_*bro的帖子

Serde JSON 反序列化枚举

我有一个枚举:

#[derive(Serialize, Deserialize)]
enum Action {
    Join,
    Leave,
}
Run Code Online (Sandbox Code Playgroud)

和一个结构:

#[derive(Serialize, Deserialize)]
struct Message {
    action: Action,
}
Run Code Online (Sandbox Code Playgroud)

我传递了一个 JSON 字符串:

"{\"action\":0}" // `json_string` var
Run Code Online (Sandbox Code Playgroud)

但是当我尝试像这样反序列化时:

let msg: Message = serde_json::from_str(json_string)?;
Run Code Online (Sandbox Code Playgroud)

我得到了错误expected value at line 1 column 11

在 JSON 中,如果我用0字符串替换数字"Join",它会起作用,但我希望数字对应于Action枚举的值(0is Action::Join1is Action::Leave),因为它来自 TypeScript 请求。有没有一种简单的方法可以实现这一目标?

enums json rust serde

3
推荐指数
1
解决办法
2054
查看次数

标签 统计

enums ×1

json ×1

rust ×1

serde ×1