UTILS.
100% у браузері
🦀

JSON у структури Rust Serde

Згенеруйте структури Rust із похідними serde зі зразка JSON, готові до Serialize/Deserialize, з Option для nullable-полів та атрибутами rename.

результат

Про цей інструмент

Інструмент JSON у структури Rust Serde перетворює вставлений зразок JSON на структури Rust з анотаціями для serde, тож ви можете десеріалізувати те саме навантаження, не пишучи вручну кожне поле. Він розбирає JSON, рекурсивно визначає типи Rust і видає структуру #[derive(Serialize, Deserialize, ...)] на кожен об'єкт: рядки стають String, цілі числа — i64 (або u64, коли всі зразки невід'ємні), інші числа — f64, булеві — bool, масиви — Vec<T>, а вкладені об'єкти — власними структурами PascalCase, визначеними перед їхніми батьками.

Уся робота відбувається локально у вашому браузері за допомогою JSON.parse і звичайного JavaScript — нічого не завантажується. Поля структур перетворюються на snake_case, і щоразу, коли ключ JSON відрізняється від поля snake_case, інструмент додає #[serde(rename = "originalKey")], тож структура все одно відповідає формату передачі даних. Ключі, відсутні в деяких сусідніх зразках або побачені як null, стають Option<T> з #[serde(default)], тож десеріалізація толерантна до їх відсутності. Порожні масиви резервуються до Vec<serde_json::Value>.

Перемикач розрядності цілих перемикає між 64-бітними (i64/u64, за замовчуванням) і 32-бітними (i32/u32) цілими, автоматично підвищуючи до 64-бітних, коли вибіркове значення перевищує 32-бітний діапазон. Перемикач похідних обирає між повним набором (Serialize, Deserialize, Debug, Clone) і мінімальним Serialize, Deserialize. Файл починається з use serde::{Serialize, Deserialize};. Скопіюйте його або завантажте файл .rs.

Поширені запитання

Як типи JSON зіставляються з Rust?
string у String, ціле у i64 (або u64, коли кожен зразок невід'ємний), нецілі числа у f64, булеве у bool, масив у Vec<T>, а об'єкт в іменовану структуру з похідними serde. Null або відсутні поля стають Option<T> з #[serde(default)].
Коли додається #[serde(rename)]?
Щоразу, коли ключ JSON не дорівнює назві його поля snake_case — наприклад, ключ userName дає поле user_name з #[serde(rename = "userName")], тож структура все одно десеріалізує оригінальний JSON точно.
Чи можу я обрати розрядність цілих?
Так. Перемикач розрядності видає 64-бітні (i64/u64) або 32-бітні (i32/u32) цілі. Знаковість слідує за даними: усі невід'ємні зразки використовують беззнаковий тип. Значення поза 32-бітним діапазоном автоматично підвищуються до 64-бітних.
Які похідні включено?
За замовчуванням #[derive(Serialize, Deserialize, Debug, Clone)]; мінімальний варіант видає лише Serialize, Deserialize. Дочірні структури оголошуються перед батьками, що на них посилаються, тож модуль компілюється як є.

Більше інструментів