我可以在Rust中序列化一个驼峰命名的结构体并反序列化帕斯卡命名的结构体吗?

3
我有一个结构体,我希望能够以驼峰命名法进行序列化,并以帕斯卡命名法进行反序列化。这种可能吗?我看到了serde中的rename_all = snake_case

1
你为什么想要那个? - Chayim Friedman
1
为什么你想要那个呢? - Chayim Friedman
1
为什么你想要那个? - undefined
2
@ChayimFriedman 我以前做过类似的事情,以便在使用不同约定的多个地方使用相同的类型定义(接受来自外部API的数据,但直接馈送到某些内部服务)。但是根据我的经验,这种想法通常是短视的,最终我还是会使用单独的结构体。 - kmdreko
2
@ChayimFriedman我之前做过类似的事情,以便在使用不同约定的多个地方使用相同类型定义(从外部API接受数据,但直接输入到某些内部服务)。但根据我的经验,这种想法通常是短视的,最终我还是会使用单独的结构体。 - kmdreko
2
@ChayimFriedman 我以前做过类似的事情,以便在使用不同约定的多个地方使用相同的类型定义(接受来自外部 API 的数据,但直接输入到某些内部服务中)。但根据我的经验,这个想法往往是短视的,最终我还是会使用单独的结构体。 - undefined
1个回答

8

来自文档

#[serde(rename_all = "...")]

根据给定的命名约定重命名所有字段(如果这是一个结构体)或变体(如果这是一个枚举)。可能的值为"lowercase""UPPERCASE""PascalCase""camelCase""snake_case""SCREAMING_SNAKE_CASE""kebab-case""SCREAMING-KEBAB-CASE"

允许指定序列化与反序列化的独立命名约定:

  • #[serde(rename_all(serialize = "..."))]
  • #[serde(rename_all(deserialize = "..."))]
  • #[serde(rename_all(serialize = "...", deserialize = "..."))

因此,#[serde(rename_all(serialize = "camelCase", deserialize = "PascalCase"))]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接