JSON Formatter

Format JSON and generate models

Dart firstTS / Kotlin / Java / Swift

Output

Root type: AppConfig

Dart
import 'dart:convert';

AppConfig appConfigFromJson(String str) => AppConfig.fromJson(json.decode(str) as Map<String, dynamic>);
String appConfigToJson(AppConfig data) => json.encode(data.toJson());

class Owner {
  Owner({
    required this.fullName,
    required this.email,
  });

  final String fullName;
  final String email;

  factory Owner.fromJson(Map<String, dynamic> json) => Owner(
      fullName: json['full_name'] as String,
      email: json['email'] as String,
  );

  Map<String, dynamic> toJson() => {
      'full_name': fullName,
      'email': email,
    };
}

class Version {
  Version({
    required this.name,
    required this.buildNumber,
  });

  final String name;
  final int buildNumber;

  factory Version.fromJson(Map<String, dynamic> json) => Version(
      name: json['name'] as String,
      buildNumber: json['build_number'] as int,
  );

  Map<String, dynamic> toJson() => {
      'name': name,
      'build_number': buildNumber,
    };
}

class AppConfig {
  AppConfig({
    required this.id,
    required this.name,
    required this.isActive,
    required this.rating,
    required this.tags,
    required this.owner,
    required this.versions,
  });

  final int id;
  final String name;
  final bool isActive;
  final double rating;
  final List<String> tags;
  final Owner owner;
  final List<Version> versions;

  factory AppConfig.fromJson(Map<String, dynamic> json) => AppConfig(
      id: json['id'] as int,
      name: json['name'] as String,
      isActive: json['is_active'] as bool,
      rating: (json['rating'] as num).toDouble(),
      tags: ((json['tags'] as List<dynamic>?) ?? const []).map((item) => item as String).toList(),
      owner: Owner.fromJson(json['owner'] as Map<String, dynamic>),
      versions: ((json['versions'] as List<dynamic>?) ?? const []).map((item) => Version.fromJson(item as Map<String, dynamic>)).toList(),
  );

  Map<String, dynamic> toJson() => {
      'id': id,
      'name': name,
      'is_active': isActive,
      'rating': rating,
      'tags': tags.map((item) => item).toList(),
      'owner': owner.toJson(),
      'versions': versions.map((item) => item.toJson()).toList(),
    };
}