Skip to content

Конвертер JSON в структуры Rust

Вставьте JSON и мгновенно получите идиоматичные структуры serde для Rust, на 100% в браузере. Правильные типы i64/u64/f64, Option для null, #[serde(rename)] для camelCase. Бесплатно.

Без отслеживания Работает в браузере Бесплатно
Настройки
0 симв.
Вывод Rust
0 строк
Вывод проверен на соответствие семантике serde и форматированию rustfmt для реальных payload'ов API. — Команда инженеров Go-Tools · Jul 2, 2026

Что такое конвертация 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. 1

    Вставьте JSON

    Поместите объект JSON, массив или ответ API в поле ввода. Конвертация начинается мгновенно.

  2. 2

    Настройте вывод

    Переименуйте корневую структуру и переключайте деривации serde, Debug и Clone или видимость pub, чтобы соответствовать стилю вашего crate.

  3. 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?
Вставьте JSON в поле ввода. Конвертер мгновенно разбирает его в браузере и генерирует структуры Rust с деривациями serde справа. Нажмите «Скопировать», чтобы получить результат — без загрузки, без аккаунта, без ожидания.
Генерирует ли он деривации serde? Нужны ли мне serde и serde_json?
Да — вывод по умолчанию использует #[derive(Debug, Clone, Serialize, Deserialize)]. Добавьте serde с функцией derive в ваш Cargo.toml. Зависимость serde_json нужна только если вывод содержит serde_json::Value, который появляется для пустых или смешанных массивов и полей, содержащих только null. Отключите переключатель serde, чтобы получить обычные структуры.
Как использовать сгенерированную структуру для разбора JSON?
Добавьте serde_json в ваш Cargo.toml, затем десериализуйте в одну строку: let root: Root = serde_json::from_str(json)?;. Сгенерированная деривация Deserialize делает остальное — используйте serde_json::from_slice для среза байтов или from_reader для файла либо тела HTTP, а serde_json::to_string для сериализации обратно.
Как обрабатываются опциональные и null-поля?
Когда ключ присутствует в части элементов массива, но не во всех, он становится полем Option. Поле, которое всегда только null, становится опциональным serde_json::Value. serde автоматически считает Option опциональным, поэтому атрибут #[serde(default)] не добавляется и не требуется.
Как он обрабатывает ключи camelCase и ключевые слова Rust?
Имена полей преобразуются в идиоматичный snake_case, а атрибут #[serde(rename)] сопоставляет их обратно с точным ключом JSON. Зарезервированные ключевые слова вроде type или match выводятся как type_ или match_ с rename, что надёжнее сырых идентификаторов, потому что охватывает также self, crate и super.
Может ли он использовать #[serde(rename_all)] вместо rename для каждого поля?
Инструмент выводит #[serde(rename)] для каждого поля, потому что это всегда работает — даже когда один payload смешивает camelCase, snake_case и нерегулярные ключи. Если все поля структуры используют одно соглашение, удалите эти атрибуты и поставьте на структуру один #[serde(rename_all = "camelCase")]; оба десериализуются одинаково.
Какой числовой тип Rust он использует?
Целые числа сопоставляются с i64 или u64, когда значение превышает i64::MAX, и переходят к f64 за пределами u64 — так большие идентификаторы по-прежнему сохраняются без потерь. Любое число с десятичной точкой или экспонентой (как 1.0 или 2e3) сопоставляется с f64, потому что serde отклонил бы число с плавающей точкой в целочисленном поле.
Как типизируются даты и метки времени?
В JSON нет типа даты, поэтому ISO-строки вроде 2011-01-25 или метки времени RFC 3339 выводятся как String. Для настоящей работы с датами измените поле на тип chrono — DateTime в часовом поясе Utc или NaiveDate — и включите функцию serde у chrono. Тогда serde разбирает RFC 3339 автоматически.
Как обрабатывать объекты с динамическими или неизвестными ключами?
Когда ключи различаются — например, отображение идентификаторов на значения — замените сгенерированную структуру на HashMap с ключом String. Чтобы сохранить типизированную структуру, но всё же захватывать дополнительные поля, добавьте поле #[serde(flatten)], являющееся HashMap. Для полностью динамических значений универсальным типом служит serde_json::Value.
Приватны и безопасны ли мои данные JSON?
Да. Конвертация происходит на 100% в браузере на JavaScript. Ваш JSON — включая токены, идентификаторы или данные клиентов — никогда не покидает страницу и никогда не отправляется на сервер.
Могу ли я генерировать обычные структуры Rust без serde?
Да. Отключите переключатель serde, чтобы убрать строку use serde, деривации Serialize и Deserialize и все атрибуты #[serde(rename)] — оставив чистые структуры. Также можно переключать деривации Debug и Clone и видимость pub.
Инструмент бесплатный? Нужен ли аккаунт?
Он полностью бесплатный — без регистрации, без ограничений и без рекламы, загромождающей рабочую область.

Похожие инструменты

Все инструменты →

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% в браузере. Именованный, десятичный или шестнадцатеричный вывод; данные не загружаются.