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

Ввод JSON

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

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

Configuration

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

Классы с null safety и JSON‑сериализацией

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

Используйте этот генератор JSON to Dart, чтобы создавать нулевые классы Dart из образцов JSON для приложений Flutter и служб Dart.

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

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

    • Установите Class Name для корневой модели (например, Root).
    • Включите нулевую безопасность и проверьте, как представлены необязательные поля (String?).
    • Если вы используете генерацию кода, выберите стиль сериализации (например, json_serializable).
  3. Шаг 3. Просмотрите сгенерированный код.

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

    • Добавьте сгенерированные классы в свой проект (например, в lib/models).
    • Разберите JSON на модели с помощью фабрики fromJson или сгенерированных сериализаторов.
    • Запустите flutter format, чтобы выходные данные соответствовали стилю вашего проекта.
  5. Шаг 5 – Скопируйте или загрузите

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

Советы

  • Сохраняйте классы моделей небольшими и для ясности составляйте вложенные типы.
  • Используйте анализ DateTime только в том случае, если формат вашего API согласован.
  • Предпочитайте сгенерированные сериализаторы для больших моделей, чтобы уменьшить количество ошибок при сопоставлении вручную.
Пример вывода (упрощенный)
// Ввод 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 Dart models (simplified)
class Metadata {
  final String plan;
  const Metadata({required this.plan});
}

class Root {
  final int id;
  final String name;
  final String? email;
  final bool active;
  final List<String> roles;
  final Metadata metadata;
  final String createdAt;
  final double score;
  final Object? notes;

  const Root({
    required this.id,
    required this.name,
    required this.email,
    required this.active,
    required this.roles,
    required this.metadata,
    required this.createdAt,
    required this.score,
    required this.notes,
  });
}

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

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

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

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

Генератор создаёт Dart‑классы с корректной типизацией, поддерживает ручную JSON‑сериализацию и пакет json_annotation, использует nullable‑типы для null и следует соглашениям именования Dart.

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

При выборе json_annotation сгенерированные классы используют @JsonSerializable() и автоматически создают методы fromJson/toJson с помощью build_runner. Это даёт типобезопасную JSON‑сериализацию.

Как обрабатываются null‑значения?

Null в JSON маппится на nullable‑типы (?) в Dart. Обязательные поля используют 'required' в конструкторах — в соответствии с принципами null safety.

Что насчёт типовой системы Dart?

Код использует сильную типизацию Dart с подходящими типами (int, double, String, bool, List, Map) и следует соглашениям вроде camelCase для имён полей.

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