Rust使用serde进行序列化
1、添加依赖
1 |
|
2、常用属性
2.1 全局修改属性名称格式
位置:增加在
struct
位置配置:
#[serde(rename_all = "...")]
,支持"lowercase"
,"UPPERCASE"
,"PascalCase"
,"camelCase"
,"snake_case"
,"SCREAMING_SNAKE_CASE"
,"kebab-case"
,"SCREAMING-KEBAB-CASE"
属性名称需要以 下划线(
_
)分割示例:
1
2
3
4
5#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all="camelCase")] // json字段格式为 camelCase 例如 stringName
pub struct StructWithCustomDate {
pub user_name: String,
}序列化时要求
json
中字段名为userName
2.2 默认值 #[serde(default)]
使用属性类型默认值,即由 Default Trait
提供的默认值,例如:i32 默认为0
需要在具体属性上标注
示例:
1 |
|
2.3 默认值,指定函数 #[serde(default = "path")]
由指定的函数提供属性缺省值。
需要在具体属性上标注
示例:
1 |
|
2.4 属性跳过 #[serde(skip)]
可以通过 #[serde(skip_serializing)]
和 #[serde(skip_deserializing)]
单独针对序列化或反序列化过程
在反序列化的时候,serde
会使用 Default::default()
或 default = "..."
提供属性默认值
1 |
|
2.5 外部module自定义序列化过程 #[serde(with = "module")]
1 |
|
3、自定义日期序列化
1 |
|
输出结果:
1 |
|
更多内容请查阅serde
官网内容:https://serde.rs/
Rust使用serde进行序列化
https://probiecoder.cn/rust/serde.html