@@ -28,10 +28,12 @@ function generateDartModel(json: any, className: string, generated: Set<string>
28
28
const toJsonLines : string [ ] = [ ] ;
29
29
const nestedClasses : string [ ] = [ ] ;
30
30
31
- // Determine model type based on class name
32
31
const isRequest = className . toLowerCase ( ) . includes ( 'request' ) ;
33
32
const isResponse = className . toLowerCase ( ) . includes ( 'response' ) ;
34
33
34
+ // Extract the base name by removing "Request"/"Response"
35
+ const baseName = className . replace ( / ( R e q u e s t | R e s p o n s e ) $ / i, '' ) ;
36
+
35
37
for ( const [ key , value ] of Object . entries ( json ) ) {
36
38
let type = 'dynamic' ;
37
39
const varName = toCamelCase ( key ) ;
@@ -48,7 +50,8 @@ function generateDartModel(json: any, className: string, generated: Set<string>
48
50
type = 'dynamic' ;
49
51
} else if ( Array . isArray ( value ) ) {
50
52
if ( value . length > 0 && typeof value [ 0 ] === 'object' && value [ 0 ] !== null ) {
51
- const nestedClass = `${ className } ${ pascalCase ( key ) } Item` ;
53
+ // Fixed: Put the suffix after the property name
54
+ const nestedClass = `${ baseName } ${ pascalCase ( key ) } ${ isResponse ? 'Response' : isRequest ? 'Request' : '' } ` ;
52
55
type = `List<${ nestedClass } >` ;
53
56
parseCode = `(json['${ key } '] as List).map((e) => ${ nestedClass } .fromJson(e)).toList()` ;
54
57
toJsonCode = `'${ key } ': ${ varName } .map((e) => e.toJson()).toList()` ;
@@ -59,7 +62,8 @@ function generateDartModel(json: any, className: string, generated: Set<string>
59
62
toJsonCode = `'${ key } ': ${ varName } ` ;
60
63
}
61
64
} else if ( typeof value === 'object' ) {
62
- const nestedClass = `${ className } ${ pascalCase ( key ) } ` ;
65
+ // Fixed: Put the suffix after the property name, not the base name
66
+ const nestedClass = `${ baseName } ${ pascalCase ( key ) } ${ isResponse ? 'Response' : isRequest ? 'Request' : '' } ` ;
63
67
type = nestedClass ;
64
68
parseCode = `${ nestedClass } .fromJson(json['${ key } '])` ;
65
69
toJsonCode = `'${ key } ': ${ varName } .toJson()` ;
@@ -73,22 +77,17 @@ function generateDartModel(json: any, className: string, generated: Set<string>
73
77
}
74
78
75
79
let methods = '' ;
76
-
77
- // Generate fromJson for Response models or if neither Request nor Response is specified
78
80
if ( isResponse || ( ! isRequest && ! isResponse ) ) {
79
81
methods += `
80
-
81
82
factory ${ className } .fromJson(Map<String, dynamic> json) {
82
83
return ${ className } (
83
84
${ fromJsonLines . join ( '\n' ) }
84
85
);
85
86
}` ;
86
87
}
87
88
88
- // Generate toJson for Request models or if neither Request nor Response is specified
89
89
if ( isRequest || ( ! isRequest && ! isResponse ) ) {
90
90
methods += `
91
-
92
91
Map<String, dynamic> toJson() {
93
92
return {
94
93
${ toJsonLines . join ( '\n' ) }
0 commit comments