搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

serde-rs/serde

开发工具

面向 Rust 开发者的序列化与反序列化框架,通过独立格式 crate 支持 JSON 等多种数据格式。

11,057
991
Rust
Apache-2.0
创建于 12 年前

项目介绍

Serde 是 Rust 的序列化框架,提供 Serialize 和 Deserialize 两个 trait,让 Rust 结构体和枚举能与各种数据格式互相转换。核心 crate 只包含 trait 和通用 API,每种数据格式由独立 crate 提供,例如 serde_json 负责 JSON,生态中还有 MessagePack、YAML、TOML 等实现。它适合需要在内存类型与网络、存储格式之间做类型化转换的 Rust 开发者。

启用 derive 特性后,可以用 #[derive(Serialize, Deserialize)] 为自己定义的类型自动生成实现,不必手写转换代码。项目文档还说明了 no-std 用法和最低 Rust 版本。

快速使用

在 Cargo.toml 中加入核心 crate 和一个格式 crate:

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

为类型派生 trait,再用格式 crate 完成转换:

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let point = Point { x: 1, y: 2 };
    let serialized = serde_json::to_string(&point).unwrap();
    println!("serialized = {}", serialized);

    let deserialized: Point = serde_json::from_str(&serialized).unwrap();
    println!("deserialized = {:?}", deserialized);
}

示例会输出 JSON 字符串,再把它解析回 Point;README 提供了该片段的 playground 入口。需要选择格式或配置派生时,可查看项目概览、支持的数据格式列表和 derive 指南,具体 trait 与属性说明见 API 文档。

使用约束

  • serde 要求 Rust 1.56 及以上,serde_derive 要求 Rust 1.71 及以上;固定工具链版本时需要核对。
  • 格式支持不在核心 crate 中,必须另外引入对应格式 crate,实际能力取决于该 crate。
  • 只有使用 #[derive(Serialize, Deserialize)] 时才需要 derive 特性;手写 trait 实现则不需要。
  • README 提到支持 no-std,但没有展开配置细节,具体目标平台应查 crate 文档。
  • 项目采用 Apache-2.0 或 MIT 双许可,可任选其一。

HotRepo 点评

仓库在 2026-11-07 的 Rust 日榜记录中新增 102 Star,位列第 14,当时总 Star 为 11,046、Fork 为 990。Hacker News 上的讨论集中在两个节点:2017 年的 1.0 发布获得 273 分;2023 年围绕 serde_derive 预编译二进制的争议产生多个帖子(122 分、98 分及后续小帖)。这些讨论最终记录了预编译二进制被移除,评论者也在争论 Rust 生态的审查流程能否及时发现问题。对使用者来说,实际意义是在升级时留意构建产物和依赖来源,而不是据此评价框架的核心功能。

项目源码与说明

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Serde 1.0.0 for Rust released
▲ 273 · 51 条评论 · 2017年4月20日
Precompiled binaries removed from serde v1.0.184
▲ 122 · 37 条评论 · 2023年8月21日
Serde has started shipping precompiled binaries with no way to opt out
▲ 98 · 25 条评论 · 2023年8月18日