Генератор JSON в Rust

Ввод JSON

Загрузка редактора…

Сгенерированный Rust

Configuration

Введите JSON, чтобы сгенерировать Rust‑структуры

Безопасные структуры с ownership

Как конвертировать JSON в Rust – пошаговое руководство

Используйте этот генератор JSON to Rust для создания структур Rust из образцов JSON для сервисов и инструментов CLI с поддержкой serde.

  1. Шаг 1. Вставьте образец JSON.

    • Вставьте типичный объект или массив JSON в левый редактор.
    • Включите вложенные объекты, массивы и поля, допускающие значение NULL, чтобы типы выводились правильно.
    • Используйте Import для загрузки JSON из файла, URL-адреса или образца данных.
  2. Шаг 2. Выберите параметры структуры Rust.

    • Установите корень Struct Name (например, Root).
    • Решите, как обрабатывать необязательные поля (Option<T>) и неизвестные значения (serde_json::Value).
    • Подтвердите атрибуты именования и serde, чтобы ключи JSON сопоставлялись правильно.
  3. Шаг 3. Просмотрите сгенерированный код.

    • Проверьте имена полей, типы и способ моделирования массивов/объектов.
    • Настройте такие параметры, как Root Type Name, обработку значений NULL и платформы, если они доступны.
    • Если поле выведено неправильно, измените образец JSON и выполните его повторное создание.
  4. Шаг 4 – Используйте структуры с serde

    • Добавьте serde и serde_json в свои зависимости и включите производные макросы.
    • Десериализуйте JSON в корневую структуру, используя serde_json::from_str.
    • Добавьте проверку после десериализации, если вам нужны более надежные гарантии.
  5. Шаг 5 – Скопируйте или загрузите

    • Скопируйте выходные данные в свой проект или загрузите их в виде файла.
    • Запустите форматтер/линтер в соответствии со стилем вашего кода.
    • Добавьте библиотеки синтаксического анализа/сериализации JSON, если они требуются для вашего языка.

Советы

  • Используйте Option<T> для полей, которые могут отсутствовать или иметь значение NULL.
  • Предпочитайте типы chrono только в том случае, если ваш формат метки времени стабилен.
  • Для обеспечения гибкости храните структуры DTO отдельно от типов внутренних доменов.
Пример вывода (упрощенный)
// Ввод JSON
{
  "id": 123,
  "name": "Maeve Winters",
  "email": "[email protected]",
  "active": true,
  "roles": ["admin", "editor"],
  "metadata": { "plan": "pro" },
  "createdAt": "2024-03-01T10:15:00Z",
  "score": 99.5,
  "notes": null
}

// Generated Rust structs (simplified)
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub struct Metadata {
  pub plan: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Root {
  pub id: i64,
  pub name: String,
  pub email: Option<String>,
  pub active: bool,
  pub roles: Vec<String>,
  pub metadata: Metadata,
  pub created_at: String,
  pub score: f64,
  pub notes: serde_json::Value,
}

Сопутствующие инструменты JSON и Rust

Узнайте больше об инструментах JSON и схемы, которые отлично работают вместе с генератором JSON to Rust.

Часто задаваемые вопросы

Какие возможности Rust поддерживаются?

Генератор создаёт Rust‑struct с корректным ownership, поддерживает Serde и следует Rust‑конвенциям с гарантиями безопасности памяти.

Можно ли генерировать структуры, совместимые с Serde?

Да! Выберите «Serde», чтобы получить структуры с #[derive(Serialize, Deserialize)] для автоматической JSON‑сериализации через serde.

Как работает обработка Option?

По умолчанию используется Option<T> для nullable‑полей, что обеспечивает явную обработку null и безопасность по модели ownership.

Что насчёт borrowing и lifetimes?

Сгенерированные структуры используют owned‑типы (String вместо &str), чтобы избежать сложности lifetimes и упростить использование при сохранении гарантий безопасности Rust.

Генератор JSON в Rust | JSONSwiss