ДокументыИзображенияМедиаИнструменты PDF

JSON в Rust Struct

Генерируйте Rust-структуры с serde из JSON. Бесплатно, в браузере.

Processed in your browser

Из JSON в Rust Struct с serde

Совместим с экосистемой serde

Генерирует структуры, готовые к использованию с serde_json, reqwest, Actix-web, Axum и любым крейтом экосистемы Rust.

100% приватно

Ваш JSON не покидает браузер. Никакой регистрации, телеметрии и загрузки на серверы.

Корректные соглашения Rust

Автоматический snake_case, Option<T> для nullable-полей, правильные числовые типы (i64, f64). Идиоматичный код.

Мгновенно

Структуры генерируются в реальном времени. Никаких кнопок, ожидания и ограничений.

Три шага — никаких сложностей

1

Вставьте ваш JSON

Вставьте JSON, который нужно смоделировать. Может быть вложенным объектом, массивом или любой допустимой JSON-структурой.

2

Мгновенная генерация

Инструмент автоматически генерирует Rust-структуры с производными serde, следуя соглашениям snake_case.

3

Скопируйте код

Скопируйте сгенерированный код и добавьте зависимость serde в ваш Cargo.toml для непосредственного использования.

Остались вопросы?

serde (serialization/deserialization) — наиболее популярный фреймворк сериализации в экосистеме Rust. Он преобразует Rust-структуры в форматы JSON, YAML, TOML, MessagePack, CBOR и многие другие, и обратно. Ключевая особенность serde — использование макросов времени компиляции, что означает нулевые накладные расходы во время выполнения: сгенерированный код столь же эффективен, как если бы сериализация была написана вручную.

Макрос #[derive(Serialize, Deserialize)] в Rust указывает компилятору автоматически сгенерировать реализацию трейтов Serialize и Deserialize из serde для структуры. Это избавляет от необходимости писать код сериализации вручную. Это эквивалентно реализации интерфейса, но код генерируется на этапе компиляции через процедурные макросы.

snake_case — официальное соглашение об именовании в Rust для переменных, полей структур и функций (определено в Rust API Guidelines). Однако REST API часто возвращают JSON в camelCase. serde обрабатывает это несоответствие автоматически с помощью атрибута #[serde(rename_all = "camelCase")] на уровне структуры или #[serde(rename = "fieldName")] для отдельного поля.

В Rust нет null — вместо него используется тип Option<T>, который может быть Some(value) или None. Когда поле JSON может быть null или отсутствовать, соответствующий тип Rust — Option<T>, например Option<String> или Option<i64>. serde автоматически десериализует null как None и пропускает поля с None при сериализации (с #[serde(skip_serializing_if = "Option::is_none")]).

Добавьте в Cargo.toml следующие строки: serde = { version = "1.0", features = ["derive"] } и serde_json = "1.0". Функция "derive" активирует макросы #[derive(Serialize, Deserialize)]. serde_json предоставляет serde_json::from_str() для десериализации и serde_json::to_string() для сериализации. Это одни из наиболее скачиваемых крейтов в экосистеме Rust.

Rust — самый любимый язык по версии Stack Overflow, экосистема serde и WebAssembly с Rust

Rust занимает первое место в рейтинге самых любимых языков программирования по данным опроса разработчиков Stack Overflow на протяжении 9 лет подряд (2016–2024). Эта популярность обусловлена уникальным предложением: безопасность памяти без сборщика мусора, производительность, сопоставимая с C/C++, и система типов, предотвращающая целые классы ошибок на этапе компиляции — разыменование нулевых указателей, гонки данных и переполнения буфера. Всё больше проектов в критических системах, CLI-инструментах и высокопроизводительных сервисах переходят на Rust.

serde — основа сериализации в Rust. С более чем 300 миллионами загрузок на crates.io это одна из наиболее повсеместно используемых зависимостей в экосистеме. Особенность serde — архитектура с форматонезависимой моделью данных: структуры один раз реализуют абстрактную модель данных serde, а форматы (JSON, YAML, TOML, Bincode, MessagePack и т.д.) реализуют собственные адаптеры. Это означает, что смена JSON на MSGPACK в Rust-проекте зачастую сводится к замене одного крейта.

WebAssembly (Wasm) — ещё одна область, где Rust превосходит других. С помощью wasm-bindgen и wasm-pack можно скомпилировать Rust-код в WebAssembly и запустить его в браузере с производительностью, близкой к нативной. serde_json работает на Wasm-таргетах без изменений. Такие проекты, как Figma (движок рендеринга), Cloudflare Workers и части Firefox, написаны на Rust. Инструмент на convertir.ai использует аналогичные технологии: клиентская обработка без отправки данных на сервер.