# JSON 转 Rust Struct

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

> 标准页面: https://elysiatools.com/zh/tools/json-to-rust

- **分类:** Development

- **关键词:** json, rust, struct, serde, 转换, Serialize

## 概述

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

## 输入项

- **JSON 输入** (textarea): { "name": "Alice", "age": 30, "roles": \["admin", "user"\], "address": { "city": "Shanghai", "zip": "200000" } }
- **根类型名称** (text): Root
- **用 Option 包裹** (checkbox)

## 适用场景

- 在 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 框架的路由处理器时，快速定义请求体和响应体的结构。

## 常见问题

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

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

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

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

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

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

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

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

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

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

## 相关工具

- [Data URI 生成器](https://elysiatools.com/zh/tools/data-uri-generator): 将文件转换为 Data URI（Base64 或百分号编码），用于直接在 HTML、CSS 或 Markdown 中内联图片、字体等资源
- [JSON Schema 转 Zod Schema 转换器](https://elysiatools.com/zh/tools/json-schema-to-zod-schema-converter): 将标准 JSON Schema 的 JSON/YAML 定义转换为可直接在 TypeScript 项目中使用的 Zod 运行时校验代码，支持嵌套结构、数组、枚举和常见校验规则
- [JSON 转 C# 类](https://elysiatools.com/zh/tools/json-to-csharp): 将 JSON 数据转换为 C# class，包含 PascalCase 属性、JsonPropertyName 特性与嵌套类型推断
- [JSON 转 Go Struct](https://elysiatools.com/zh/tools/json-to-go): 将 JSON 数据转换为 Go struct 定义，包含 json 标签、导出的 PascalCase 字段和嵌套类型推断
- [JSON 转 Java 类](https://elysiatools.com/zh/tools/json-to-java): 将 JSON 数据转换为 Java class，含 Jackson @JsonProperty 注解、私有字段及 getter/setter
- [JSON 转 Kotlin Data Class](https://elysiatools.com/zh/tools/json-to-kotlin): 将 JSON 数据转换为 Kotlin data class，含 @SerializedName 注解、可空处理与嵌套类型推断
- [JSON 转 TypeScript](https://elysiatools.com/zh/tools/json-to-typescript): 将 JSON 数据转换为 TypeScript interface 或 type，支持联合类型、可选字段与嵌套对象推断
- [日志转时序图转换器](https://elysiatools.com/zh/tools/log-sequence-diagram-converter): 把结构化服务日志转换成 Mermaid 或 PlantUML 时序图，并可叠加延迟和错误标注

## 示例

- [Web Rust 数据序列化示例](https://elysiatools.com/zh/samples/web-serialization-rust): Web Rust 数据序列化示例，包括JSON序列化、反序列化和XML解析
- [Terraform Plan JSON 样本](https://elysiatools.com/zh/samples/terraform-plan-json-samples): 用于依赖可视化和变更审查的 Terraform plan JSON 文件样本，贴近 terraform show -json 输出结构
- [聊天记录 JSON 示例](https://elysiatools.com/zh/samples/chat-transcript-json): 多角色聊天记录的 JSON 示例
- [JSON 示例](https://elysiatools.com/zh/samples/json): JSON（JavaScript 对象表示法）格式示例，从简单到复杂结构

## 相关内容

- [JSON 到强类型代码生成器](https://elysiatools.com/zh/hubs/json-to-typed-code-generators): 从 JSON 或 schema 证据生成 TypeScript、Go、Rust、Kotlin、Java、C# 与 Zod 校验模型。
