Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • O openapi-generator
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,476
    • Issues 3,476
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 402
    • Merge requests 402
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OpenAPI Tools
  • openapi-generator
  • Issues
  • #2567
Closed
Open
Issue created Apr 01, 2019 by Administrator@rootContributor

[BUG][Dart] Syntax error when generating array of arrays

Created by: Croptracker

Description

An OpenAPI spec that defines an array of arrays will generate Dart code with syntax errors.

openapi-generator version

4.0

OpenAPI declaration file content or url
openapi: 3.0.2
info:
  version: "1"
  title: Dart Bug
  license:
    name: Proprietary
servers:
- url: 'http://petstore.swagger.io/v1'

paths:

  /bug/getArrayOfArrays:
    post:
      operationId: getArrayOfArrays
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrayOfArraysResponse'


components:
  schemas:

    ArrayOfArraysResponse:
      properties:
        payload:
          type: array
          items:
            type: array
            items:
              $ref: '#/components/schemas/MyObject'


    MyObject:
      properties:
        first_name:
          type: string
Command line used for generation

java -jar etc/openapi/openapi-generator-cli-4.0.jar generate -i array_of_arrays_bug.yaml -g dart -o lib/services -DSkiptests

Steps to reproduce

Run the Dart generator on the above OpenAPI spec. The generated ArrayOfArraysResponse object looks like:

  ArrayOfArraysResponse.fromJson(Map<String, dynamic> json) {
    if (json == null) return;
    if (json['payload'] == null) {
      payload = null;
    } else {
      payload = List.listFromJson(json['payload']);
    }
  }

Which as the following error: Error: Method not found: 'List.listFromJson'.

The workaround is to make the following changes:

components:
  schemas:

    ArrayOfArraysResponse:
      properties:
        payload:
          type: array
          items:
            $ref: '#/components/schemas/Parent'

    Parent:
      properties:
        children:
          type: array
          items:
            $ref: '#/components/schemas/MyObject'

    MyObject:
      properties:
        first_name:
          type: string

Which then correctly generates:

  ArrayOfArraysResponse.fromJson(Map<String, dynamic> json) {
    if (json == null) return;
    if (json['payload'] == null) {
      payload = null;
    } else {
      payload = Parent.listFromJson(json['payload']);
    }
  }
`
Assignee
Assign to
Time tracking