79737760

Date: 2025-08-17 10:15:42
Score: 0.5
Natty:
Report link

Ivo's answer works for general enum usage. But in my case I wanted to use json_serializable with enum where some enum values had different string/json key mapping. So I used JsonValue annotation over enum values as below:

enum Status {
  active,
  inactive,
  pending,
  @JsonValue('unknown_status') // Optional: custom JSON value for unknown
  unknown,
}

and if you need a default enum value in case json string does not match then apply @JsonKey with unknownEnumValue param to the field in your serializable class using the enum, specifying the desired default value for unknownEnumValue.

part 'my_model.g.dart'; // Generated file

@JsonSerializable()
class MyModel {
  final String name;
  @JsonKey(unknownEnumValue: Status.unknown) // set 'unknown' as default
  final Status status;

  MyModel({required this.name, required this.status});

  factory MyModel.fromJson(Map<String, dynamic> json) => _$MyModelFromJson(json);
  Map<String, dynamic> toJson() => _$MyModelToJson(this);
}
Reasons:
  • Long answer (-0.5):
  • Has code block (-0.5):
  • User mentioned (1): @JsonKey
  • Low reputation (0.5):
Posted by: Shubham