@@ -31,52 +31,22 @@ import 'package:json_annotation/json_annotation.dart';
31
31
part 'example.g.dart';
32
32
33
33
@JsonSerializable()
34
- class A {
35
- final StatusCode? statusCode;
36
- final StatusCode2 statusCode2;
37
- final StatusCode3 statusCode3;
34
+ class Person {
35
+ /// The generated code assumes these values exist in JSON.
36
+ final String firstName, lastName;
38
37
39
- A(this.statusCode, this.statusCode2, this.statusCode3);
38
+ /// The generated code below handles if the corresponding JSON value doesn't
39
+ /// exist or is empty.
40
+ final DateTime? dateOfBirth;
40
41
41
- factory A.fromJson(Map<String, dynamic> json) => _$AFromJson(json );
42
+ Person({required this.firstName, required this.lastName, this.dateOfBirth} );
42
43
43
- Map<String, dynamic> toJson() => _$AToJson(this);
44
- }
45
-
46
- enum StatusCode {
47
- @JsonValue(200, aliases: [201, 202])
48
- success,
49
- @JsonValue(301)
50
- movedPermanently,
51
- @JsonValue(302)
52
- found,
53
- @JsonValue(500)
54
- internalServerError,
55
- }
56
-
57
- @JsonEnum(valueField: 'code')
58
- enum StatusCode2 {
59
- success(200),
60
- movedPermanently(301),
61
- found(302),
62
- internalServerError(500);
44
+ /// Connect the generated [_$PersonFromJson] function to the `fromJson`
45
+ /// factory.
46
+ factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
63
47
64
- const StatusCode2(this.code);
65
-
66
- final int code;
67
- }
68
-
69
- @JsonEnum(valueField: 'code')
70
- enum StatusCode3 {
71
- success(200),
72
- movedPermanently(301),
73
- @JsonValue(1000)
74
- found(302),
75
- internalServerError(500);
76
-
77
- const StatusCode3(this.code);
78
-
79
- final int code;
48
+ /// Connect the generated [_$PersonToJson] function to the `toJson` method.
49
+ Map<String, dynamic> toJson() => _$PersonToJson(this);
80
50
}
81
51
```
82
52
@@ -85,62 +55,19 @@ Building creates the corresponding part `example.g.dart`:
85
55
``` dart
86
56
part of 'example.dart';
87
57
88
- A _$AFromJson(Map<String, dynamic> json) => A(
89
- $enumDecodeNullableWithDecodeMap(
90
- _$StatusCodeEnumDecodeMap, json['statusCode']),
91
- $enumDecodeWithDecodeMap(_$StatusCode2EnumDecodeMap, json['statusCode2']),
92
- $enumDecodeWithDecodeMap(_$StatusCode3EnumDecodeMap, json['statusCode3']),
58
+ Person _$PersonFromJson(Map<String, dynamic> json) => Person(
59
+ firstName: json['firstName'] as String,
60
+ lastName: json['lastName'] as String,
61
+ dateOfBirth: json['dateOfBirth'] == null
62
+ ? null
63
+ : DateTime.parse(json['dateOfBirth'] as String),
93
64
);
94
65
95
- Map<String, dynamic> _$AToJson(A instance) => <String, dynamic>{
96
- 'statusCode ': _$StatusCodeEnumMap[ instance.statusCode] ,
97
- 'statusCode2 ': _$StatusCode2EnumMap[ instance.statusCode2]! ,
98
- 'statusCode3 ': _$StatusCode3EnumMap[ instance.statusCode3]! ,
66
+ Map<String, dynamic> _$PersonToJson(Person instance) => <String, dynamic>{
67
+ 'firstName ': instance.firstName ,
68
+ 'lastName ': instance.lastName ,
69
+ 'dateOfBirth ': instance.dateOfBirth?.toIso8601String() ,
99
70
};
100
-
101
- const _$StatusCodeEnumMap = {
102
- StatusCode.success: 200,
103
- StatusCode.movedPermanently: 301,
104
- StatusCode.found: 302,
105
- StatusCode.internalServerError: 500,
106
- };
107
-
108
- const _$StatusCodeEnumDecodeMap = {
109
- 200: StatusCode.success,
110
- 201: StatusCode.success,
111
- 202: StatusCode.success,
112
- 301: StatusCode.movedPermanently,
113
- 302: StatusCode.found,
114
- 500: StatusCode.internalServerError,
115
- };
116
-
117
- const _$StatusCode2EnumMap = {
118
- StatusCode2.success: 200,
119
- StatusCode2.movedPermanently: 301,
120
- StatusCode2.found: 302,
121
- StatusCode2.internalServerError: 500,
122
- };
123
-
124
- const _$StatusCode2EnumDecodeMap = {
125
- 200: StatusCode2.success,
126
- 301: StatusCode2.movedPermanently,
127
- 302: StatusCode2.found,
128
- 500: StatusCode2.internalServerError,
129
- };
130
-
131
- const _$StatusCode3EnumMap = {
132
- StatusCode3.success: 200,
133
- StatusCode3.movedPermanently: 301,
134
- StatusCode3.found: 1000,
135
- StatusCode3.internalServerError: 500,
136
- };
137
-
138
- const _$StatusCode3EnumDecodeMap = {
139
- 200: StatusCode3.success,
140
- 301: StatusCode3.movedPermanently,
141
- 1000: StatusCode3.found,
142
- 500: StatusCode3.internalServerError,
143
- };
144
71
```
145
72
146
73
# Running the code generator
0 commit comments