JSON в Dart-класс
Преобразуйте пример JSON в Dart-класс с методами fromJson, toJson и вложенными моделями.
JSON в Dart-класс
Вставьте пример JSON и этот инструмент определяет форму данных и генерирует соответствующий Dart-класс — такой, который вы обычно писали бы вручную для модели Flutter. Вложенные объекты становятся отдельными классами, массивы становятся типизированными полями `List<...>`, и каждый класс поставляется с именованным конструктором, фабричным методом `fromJson` и методом `toJson`, поэтому результат можно сразу использовать в проекте Flutter или Dart.
Опции управляют стилем генерируемого кода. «Имя класса» устанавливает корневой класс; вложенные классы названы в честь ключа JSON, который их представил. «Безопасность null с обязательными полями» отмечает поля, присутствующие в каждом образце, как `required` с типом, не допускающим null, и поля, которые иногда отсутствуют или равны null, как nullable и optional — отключите, чтобы сделать каждое поле nullable, что более снисходительно к несогласованным ответам API. «Аннотации json_serializable» переключаются с написанных вручную тел `fromJson`/`toJson` на аннотации `@JsonSerializable()` и `@JsonKey`, которые делегируют файлу сгенерированной части `.g.dart`, для проектов, уже использующих этот пакет и build_runner. «Неизменяемые поля» делает класс неизменяемым; «Генерировать copyWith» добавляет метод создания модифицированной копии без изменения оригинала, и «Генерировать == и hashCode» добавляет сравнение значений, чтобы два экземпляра с одинаковыми значениями полей сравнивались как равные. «Отступ» переключает генерируемый код между 2 и 4 пробелами.
Когда одна и та же форма объекта повторяется — например, массив элементов с одинаковыми полями — инструмент повторно использует один класс вместо генерирования дубликата для каждого вхождения, и поле, отсутствующее только в некоторых записях массива, правильно выводится как optional, а не required. Ключи JSON, которые не являются допустимыми идентификаторами Dart, используют различные регистры или конфликтуют с ключевым словом или сгенерированным методом (например, `copyWith` или `hashCode`), автоматически переименовываются на стороне Dart, а исходный ключ сохраняется для кодирования и декодирования.
Всё работает локально в вашем браузере: образец JSON никогда не загружается никуда, что важно, если он содержит реальные данные пользователя или форму ответа внутреннего API. Скопируйте класс, загрузите его как файл .txt или отправьте результат обратно на вход, чтобы преобразовать одну вложенную часть дальше.