Конвертер JSON в структуры Rust
Вставьте JSON и мгновенно получите идиоматичные структуры serde для Rust, на 100% в браузере. Правильные типы i64/u64/f64, Option для null, #[serde(rename)] для camelCase. Бесплатно.
Настройки
Что такое конвертация JSON в Rust?
Конвертация JSON в Rust превращает образец JSON в готовые к компиляции структуры Rust с макросами #[derive(Serialize, Deserialize)] из serde, так что вам никогда не придётся вручную писать шаблонный код десериализации для ответов API или конфигурационных файлов. Этот быстрый генератор структур Rust выводит правильные числовые типы, помечает отсутствующие поля как Option и добавляет #[serde(rename)] для ключей не в snake_case — всё на 100% в браузере.
Примеры
Ответ API
{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub name: String,
pub email: String,
pub active: bool,
pub roles: Vec<String>,
}
Типичный payload REST становится готовой для serde структурой, которую можно вставить в клиент. Числа выводятся как i64, массивы становятся Vec<String>.
Вложенный объект
{"repo":"serde","owner":{"login":"dtolnay","id":100}} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub repo: String,
pub owner: Owner,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Owner {
pub login: String,
pub id: i64,
}
Вложенные объекты становятся отдельными именованными структурами (Owner), на которые ссылаются поля — одинаковые формы дедуплицируются.
Массив объектов (опциональное поле)
{"users":[{"id":1,"nick":"x"},{"id":2}]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub users: Vec<User>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub nick: Option<String>,
}
Массивы объектов сливаются в одну структуру элемента. Ключи, отсутствующие в части элементов, становятся Option<String> — без необходимости в #[serde(default)].
Ключи camelCase
{"login":"octocat","publicRepos":15,"followerCount":9001,"createdAt":"2011-01-25"} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub login: String,
#[serde(rename = "publicRepos")]
pub public_repos: i64,
#[serde(rename = "followerCount")]
pub follower_count: i64,
#[serde(rename = "createdAt")]
pub created_at: String,
}
Поля становятся snake_case с #[serde(rename)], сопоставляющим их обратно с исходным ключом JSON. Уже snake-ключи вроде login не получают rename.
Как конвертировать JSON в Rust
- 1
Вставьте JSON
Поместите объект JSON, массив или ответ API в поле ввода. Конвертация начинается мгновенно.
- 2
Настройте вывод
Переименуйте корневую структуру и переключайте деривации serde, Debug и Clone или видимость pub, чтобы соответствовать стилю вашего crate.
- 3
Скопируйте или скачайте
Получите сгенерированный Rust одним кликом и вставьте прямо в свой проект.
Common Use Cases
- Типизированные клиенты API
- Превратите образец ответа REST или GraphQL в структуры serde для клиента reqwest или подобного, не написав вручную шаблонный код десериализации.
- Разбор конфигов и фикстур
- Генерируйте структуры для конфигурационных файлов JSON, тестовых фикстур или payload'ов вебхуков, которые нужно десериализовать с помощью serde_json.
- Быстрое прототипирование
- Вставьте незнакомый payload, чтобы мгновенно увидеть его форму как типы Rust — быстрый способ изучить новый API перед его подключением.
Как работает конвертация
- Структурный вывод
- Каждый объект становится именованной структурой; одинаковые формы дедуплицируются, так что вы получаете одну структуру, а не копии. Массивы объектов сливаются ключ за ключом, а ключи, отсутствующие в части элементов, становятся Option<T>.
- Правильная типизация чисел
- Целые числа сопоставляются с i64, повышаются до u64 сверх i64::MAX и переходят к f64 за пределами u64. Числа с плавающей точкой определяются по токену (1.0, 2e3), поэтому десериализация serde никогда не падает на несоответствии float в целочисленное поле.
- Идиоматичные, компилируемые идентификаторы
- Ключи становятся полями snake_case с #[serde(rename)] обратно к исходному ключу; ключевые слова Rust, дублирующиеся имена и ключи, не являющиеся идентификаторами, санируются, поэтому вывод всегда компилируется.
- 100% на стороне клиента
- Разбор и генерация выполняются в браузере без сетевых запросов, поэтому ваши данные остаются приватными.
Советы для чистых структур Rust
- Дайте имя корневой структуре
- Задайте осмысленное корневое имя (например, User, ApiResponse) вместо стандартного Root для читаемого кода.
- Добавляйте serde_json только при необходимости
- serde_json::Value появляется для пустых или смешанных массивов и полей, содержащих только null. Дайте таким полям конкретный тип из более богатого образца, если можете, или добавьте serde_json в Cargo.toml.
- Проверяйте Option против обязательных полей
- Поля помечаются как Option<T> только когда образец их пропускает. Вставьте представительный payload, чтобы инструмент точно определил обязательные и опциональные поля.
Часто задаваемые вопросы
Как конвертировать JSON в структуру Rust?
Генерирует ли он деривации serde? Нужны ли мне serde и serde_json?
Как использовать сгенерированную структуру для разбора JSON?
Как обрабатываются опциональные и null-поля?
Как он обрабатывает ключи camelCase и ключевые слова Rust?
Может ли он использовать #[serde(rename_all)] вместо rename для каждого поля?
Какой числовой тип Rust он использует?
Как типизируются даты и метки времени?
Как обрабатывать объекты с динамическими или неизвестными ключами?
Приватны и безопасны ли мои данные JSON?
Могу ли я генерировать обычные структуры Rust без serde?
Инструмент бесплатный? Нужен ли аккаунт?
Похожие инструменты
Все инструменты →Base64 декодер и кодировщик
Кодирование и форматирование
Декодирование и кодирование Base64 онлайн бесплатно. Преобразование в реальном времени с полной поддержкой UTF-8 и эмодзи. Полная приватность — работает в браузере. Без регистрации.
Конвертер Base64 в изображение
Кодирование и форматирование
Декодируйте строку Base64 или data URI обратно в изображение прямо в браузере. Предпросмотр, размеры и MIME, затем скачивание как PNG, JPG, GIF, SVG. Без загрузки.
Конвертер CSV в JSON
Кодирование и форматирование
Конвертируйте CSV в JSON в браузере. RFC 4180, определение типов, заголовок, безопасность больших целых. 100% приватно, без загрузки.
Конвертер .env в JSON
Кодирование и форматирование
Вставьте файл .env — получите JSON мгновенно. Пароли БД, API-ключи и токены не покидают браузер: 100% приватно, без загрузки, парсер dotenv.
Бесплатный HTML-декодировщик сущностей — unescape HTML
Кодирование и форматирование
Декодируйте HTML-сущности и снимайте экранирование HTML онлайн — бесплатно, без регистрации, 100% в браузере. Преобразует именованные, десятичные и hex-ссылки обратно в символы; данные не загружаются.
Бесплатный HTML-кодировщик сущностей — экранирование HTML
Кодирование и форматирование
Кодируйте HTML-сущности и экранируйте спецсимволы (< > & " ') онлайн — бесплатно, без регистрации, 100% в браузере. Именованный, десятичный или шестнадцатеричный вывод; данные не загружаются.