Model From JSON ๐Ÿš€

pub package likes popularity pub points

A zero-setup Dart CLI tool that generates clean, Equatable-ready Dart model classes directly from JSON.

โœ… No annotations
โœ… No build_runner
โœ… No .g.dart files
โœ… Just instant model generation

โšก Generates models in under 1 second for most API JSON files โ€” no codegen pipeline needed.


โœจ Why Model From JSON?

Most Flutter model generators require:

  • Annotations (@JsonSerializable)
  • build_runner commands
  • Generated .g.dart part files
  • Extra boilerplate setup

model_from_json is different:

โœ… Works instantly
โœ… Outputs plain Dart files immediately
โœ… Perfect for rapid development and API prototyping


๐ŸŽฌ Demo

Generate models instantly:

model_from_json complex.json --name ApiResponse --out lib/models

Output:

โœ… Done! Generated 6 model files:

๐Ÿ“„ api_response.dart
๐Ÿ“„ meta.dart
๐Ÿ“„ user.dart
๐Ÿ“„ accounts.dart
๐Ÿ“„ subscription.dart
๐Ÿ“„ features.dart

โœ… Features

  • โœ… Generate Dart model classes automatically from JSON

  • โœ… Supports nested objects (profile, subscription, etc.)

  • โœ… Supports lists of nested objects (accounts, features, etc.)

  • โœ… Generates complete boilerplate:

    • fromJson()
    • toJson() (with nested serialization)
    • Equatable props
  • โœ… Generates multiple .dart files recursively

  • โœ… Supports both:

    • Command mode
    • Interactive mode
  • โœ… Optional output folder support (--out)


๐Ÿ“ฆ Installation

Activate globally:

dart pub global activate model_from_json

Run anywhere:

model_from_json <json_path> --name ClassName

๐Ÿš€ Usage


โœ… Command Mode

Generate models into the current directory:

model_from_json complex.json --name ApiResponse

Generate models into a folder:

model_from_json complex.json --name ApiResponse --out lib/models

โœ… Interactive Mode

Run without arguments:

model_from_json

You will be guided step-by-step:

Enter JSON file path: ultra.json
Enter root class name: ApiResponse
Enter output folder [.] : lib/models

๐Ÿงพ Example Input

complex.json

{
  "meta": {
    "request_id": "REQ-123",
    "success": true
  },
  "user": {
    "id": 101,
    "name": "Dipesh Panchal",
    "roles": ["trader", "developer"]
  },
  "accounts": [
    {
      "broker": "zerodha",
      "balance": 250000.75
    }
  ],
  "subscription": {
    "plan": "pro",
    "features": [
      {
        "name": "nested_models",
        "enabled": true
      }
    ]
  }
}

โœ… Example Output

api_response.dart

class ApiResponse extends Equatable {
  final Meta meta;
  final User user;
  final List<Accounts> accounts;
  final Subscription subscription;

  const ApiResponse({
    required this.meta,
    required this.user,
    required this.accounts,
    required this.subscription,
  });

  factory ApiResponse.fromJson(Map<String, dynamic> json) {
    return ApiResponse(
      meta: Meta.fromJson(json['meta'] ?? {}),
      user: User.fromJson(json['user'] ?? {}),
      accounts: (json['accounts'] as List? ?? [])
          .map((e) => Accounts.fromJson(e))
          .toList(),
      subscription: Subscription.fromJson(json['subscription'] ?? {}),
    );
  }
}

๐Ÿ“‚ Output Structure

Generated folder example:

lib/models/
 โ”œโ”€โ”€ api_response.dart
 โ”œโ”€โ”€ meta.dart
 โ”œโ”€โ”€ user.dart
 โ”œโ”€โ”€ accounts.dart
 โ”œโ”€โ”€ subscription.dart
 โ””โ”€โ”€ features.dart

โš™๏ธ CLI Options

Option Description
--name Root class name (required)
--out Output folder (optional)
--help Show CLI usage instructions

โœ… Roadmap

Planned future improvements:

  • Nullable type inference (String? phone)
  • Dictionary/Map field support (Map<String,dynamic> metadata)
  • Smarter naming (daily_pnl โ†’ DailyPnl)
  • Barrel export generation (models.dart)
  • Optional Freezed/json_serializable generation mode

๐Ÿค Contributing

Pull requests and improvements are welcome!

git clone https://github.com/yourusername/model_from_json.git
cd model_from_json
dart pub get
dart run

๐Ÿ“œ License

MIT License ยฉ 2026 Dipesh Panchal


โญ Support

If you find this tool useful, consider starring the repo and sharing it with the Flutter community ๐Ÿš€

Libraries

model_from_json