JSON 转 Rust Struct

将 JSON 数据转换为 Rust struct,含 serde Serialize/Deserialize 派生、snake_case 字段与 serde rename 属性

关键信息

分类
开发与 Web
输入类型
textarea, text, checkbox
输出类型
text
样本覆盖
4
支持 API
Yes

概览

本工具可以将 JSON 数据快速转换为 Rust 结构体(Struct)。它支持自动生成 serde 的 Serialize 和 Deserialize 派生宏,自动将字段名转换为 Rust 规范的 snake_case 命名,并添加 serde rename 属性,帮助开发者快速构建 Rust 的数据反序列化模型。

适用场景

  • 在 Rust 项目中对接外部 API,需要根据 API 返回的 JSON 响应快速定义数据结构时。
  • 使用 serde 库进行 JSON 序列化与反序列化,需要为复杂嵌套的 JSON 数据编写对应的 Rust 结构体时。
  • 需要将驼峰命名(camelCase)或其他格式的 JSON 键名自动转换为 Rust 规范的蛇形命名(snake_case)并保留映射关系时。

工作原理

  • 在输入框中粘贴或输入需要转换的原始 JSON 数据。
  • 根据需要设置根类型名称(默认为 Root),并选择是否开启“用 Option 包裹”以处理可选字段。
  • 工具会自动解析 JSON 结构,生成对应的 Rust 结构体代码,并附带 serde 派生宏与重命名属性。

使用场景

Web API 客户端开发:快速为第三方 RESTful API 的 JSON 响应生成强类型的 Rust 数据模型。
配置文件解析:将 JSON 格式的配置文件转换为 Rust 结构体,以便在程序启动时安全读取。
后端服务开发:在编写 Rust Web 框架的路由处理器时,快速定义请求体和响应体的结构。

用户案例

1. 快速对接第三方用户 API

Rust 后端开发人员
背景原因
正在使用 Axum 框架开发一个社交应用,需要对接一个返回复杂用户信息的第三方 JSON API。
解决问题
手动编写包含嵌套地址和标签列表的 Rust 结构体非常繁琐,且容易写错字段类型。
如何使用
将 API 返回的 JSON 粘贴到输入框中,设置根类型名称为 `UserProfile`,点击转换。
示例配置
根类型名称: UserProfile, 用 Option 包裹: 未勾选
效果
获得了一组带有 `#[derive(Serialize, Deserialize)]` 的 Rust 结构体,嵌套的地址被自动提取为 `Address` 结构体,字段也自动转为了 snake_case。

2. 解析含可选字段的配置文件

系统架构师
背景原因
需要在 Rust 服务中读取一个 JSON 配置文件,其中部分配置项(如端口、日志级别)是可选的。
解决问题
如果不用 Option 包裹,当 JSON 中缺失这些字段时,反序列化会失败。
如何使用
粘贴配置文件的 JSON 样例,将根类型名称设为 `AppConfig`,勾选“用 Option 包裹”选项。
示例配置
根类型名称: AppConfig, 用 Option 包裹: 已勾选
效果
生成的 Rust 结构体中所有字段均被 `Option<T>` 包裹,能够安全地反序列化不完整的 JSON 配置。

用 Samples 测试

json

相关专题

常见问题

这个工具支持嵌套的 JSON 对象吗?

支持。工具会自动提取嵌套的 JSON 对象并将其转换为独立的 Rust 结构体,同时在父结构体中进行引用。

转换后的字段命名规则是什么?

字段名会自动转换为 Rust 推荐的 snake_case 命名,并通过 `#[serde(rename = "...")]` 属性保留原始的 JSON 键名。

“用 Option 包裹”选项有什么作用?

开启后,生成的结构体字段将使用 `Option<T>` 类型包裹,适用于处理 JSON 中可能缺失或为 null 的可选字段。

生成的结构体包含哪些派生宏?

默认会为生成的结构体添加 `#[derive(Serialize, Deserialize, Debug)]` 等 serde 常用派生宏。

JSON 中的数组类型在 Rust 中如何表示?

JSON 中的数组会被转换为 Rust 的 `Vec<T>` 类型,其中 `T` 是数组元素的对应类型。

API 文档

请求端点

POST /zh/api/tools/json-to-rust

请求参数

参数名 类型 必填 描述
jsonInput textarea -
rootName text -
optionalFields checkbox -

响应格式

{
  "result": "Processed text content",
  "error": "Error message (optional)",
  "message": "Notification message (optional)",
  "metadata": {
    "key": "value"
  }
}
文本: 文本

AI MCP 文档

将此工具添加到您的 MCP 服务器配置中:

{
  "mcpServers": {
    "elysiatools-json-to-rust": {
      "name": "json-to-rust",
      "description": "将 JSON 数据转换为 Rust struct,含 serde Serialize/Deserialize 派生、snake_case 字段与 serde rename 属性",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=json-to-rust",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

你可以串联多个工具,比如:`https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`,最多20个。

如果遇见问题,请联系我们:[email protected]