gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:39:34 24 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")] 放在枚举定义之前。
其他可能的值是lowercaseUPPERCASEPascalCasecamelCasesnake_caseSCREAMING_SNAKE_CASEkebab-caseSCREAMING-KEBAB-CASE

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

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