@@ -28,10 +28,12 @@ function generateDartModel(json: any, className: string, generated: Set<string>
2828 const toJsonLines : string [ ] = [ ] ;
2929 const nestedClasses : string [ ] = [ ] ;
3030
31- // Determine model type based on class name
3231 const isRequest = className . toLowerCase ( ) . includes ( 'request' ) ;
3332 const isResponse = className . toLowerCase ( ) . includes ( 'response' ) ;
3433
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+
3537 for ( const [ key , value ] of Object . entries ( json ) ) {
3638 let type = 'dynamic' ;
3739 const varName = toCamelCase ( key ) ;
@@ -48,7 +50,8 @@ function generateDartModel(json: any, className: string, generated: Set<string>
4850 type = 'dynamic' ;
4951 } else if ( Array . isArray ( value ) ) {
5052 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' : '' } ` ;
5255 type = `List<${ nestedClass } >` ;
5356 parseCode = `(json['${ key } '] as List).map((e) => ${ nestedClass } .fromJson(e)).toList()` ;
5457 toJsonCode = `'${ key } ': ${ varName } .map((e) => e.toJson()).toList()` ;
@@ -59,7 +62,8 @@ function generateDartModel(json: any, className: string, generated: Set<string>
5962 toJsonCode = `'${ key } ': ${ varName } ` ;
6063 }
6164 } 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' : '' } ` ;
6367 type = nestedClass ;
6468 parseCode = `${ nestedClass } .fromJson(json['${ key } '])` ;
6569 toJsonCode = `'${ key } ': ${ varName } .toJson()` ;
@@ -73,22 +77,17 @@ function generateDartModel(json: any, className: string, generated: Set<string>
7377 }
7478
7579 let methods = '' ;
76-
77- // Generate fromJson for Response models or if neither Request nor Response is specified
7880 if ( isResponse || ( ! isRequest && ! isResponse ) ) {
7981 methods += `
80-
8182 factory ${ className } .fromJson(Map<String, dynamic> json) {
8283 return ${ className } (
8384${ fromJsonLines . join ( '\n' ) }
8485 );
8586 }` ;
8687 }
8788
88- // Generate toJson for Request models or if neither Request nor Response is specified
8989 if ( isRequest || ( ! isRequest && ! isResponse ) ) {
9090 methods += `
91-
9291 Map<String, dynamic> toJson() {
9392 return {
9493${ toJsonLines . join ( '\n' ) }
0 commit comments