json_model_gen 0.0.8
json_model_gen: ^0.0.8 copied to clipboard
A Dart tool to generate model classes from JSON with fromJson, toJson, copyWith, and equality overrides.
𧬠json_model_gen #
A sleek CLI tool to effortlessly generate Dart model classes from raw JSON.
β¨ Features #
- π Convert raw JSON to Dart model classes
- βοΈ Supports
freezed
annotation - β»οΈ Supports
equatable
- π Make all fields nullable (optional)
- π¬ Interactive prompts (if flags aren't provided)
- π Overwrite protection with confirmation
- π Auto-renames
.json
β.dart
when needed
π Installation #
From pub.flutter-io.cn:
dart pub add json_model_gen
Or manually add to your pubspec.yaml
:
dependencies:
json_model_gen: ^0.0.6
Then:
dart pub get
π§ Usage #
β Full command with all options: #
dart run json_model_gen \
--input=raw.json \
--output=lib/user_model.dart \
--class=UserModel \
--freezed \
--equatable \
--nullable
π§ Interactive mode: #
If you omit the flags:
dart run json_model_gen
Youβll be guided step-by-step to:
- π Enter input file path
- π Enter output file path
- π§ͺ Enter class name
- βοΈ Use
equatable
? - βοΈ Use
freezed
? - β Make all fields nullable?
π Example #
Input (raw.json
) #
{
"id": 1,
"name": "Alice",
"active": true,
"bio": null
}
Output (user_model.dart
) #
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user_model.freezed.dart';
part 'user_model.g.dart';
@freezed
class UserModel with _$UserModel {
const factory UserModel({
int? id,
String? name,
bool? active,
String? bio,
}) = _UserModel;
factory UserModel.fromJson(Map<String, dynamic> json) =>
_$UserModelFromJson(json);
}
β οΈ Notes #
- β Input must be raw JSON only (not Dart code).
- π If the input is a
.dart
file, you'll receive a warning. - π³ Class names are validated to ensure PascalCase formatting.
- π Output paths ending in
.json
will be renamed to.dart
automatically.
οΈβ Star the GitHub repo if this helps you!