gpt4 book ai didi

rust - 当大小写不匹配时,如何反序列化枚举?

转载 作者:行者123 更新时间:2023-12-03 11:24:09 25 4
gpt4 key购买 nike

我有一个 JSON 结构,如下所示:

{ "type": "suite", "event": "started", "test_count": 1 }

我想反序列化为这些结构:
#[derive(Debug, Deserialize)]
enum ResultType {
Suite,
Test,
}

#[derive(Debug, Deserialize)]
enum ResultEvent {
Started,
Failed,
Ok,
}

#[derive(Debug, Deserialize)]
struct JsonResult {
#[serde(rename(deserialize = "type"))]
test_type: ResultType,
event: ResultEvent,
test_count: Option<u32>,
}

我找不到让 serde_json 使用正确大小写的方法。我不断收到这些错误:

Error("unknown variant `suite`, expected `Suite` or `Test`", line: 1, column: 17)

如果我将枚举值的大小写更改为全部小写或全部大写,则它可以工作,但我希望能够使用 PascalCase。

最佳答案

你只需要输入 #[serde(rename_all = "snake_case")] 在枚举定义之前。
其他可能的值是 lowercase , UPPERCASE , PascalCase , camelCase , snake_case , SCREAMING_SNAKE_CASE , kebab-case , 和 SCREAMING-KEBAB-CASE .

关于rust - 当大小写不匹配时,如何反序列化枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59167416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com