Skip to main content

Python utility created to convert JSON to Swagger definitions structure, based on entities concept.

Project description

"Json to Swagger" conversor

Python utility created to convert JSON to Swagger definitions structure, based on entities concept.

Dependencies

  • Python 3.6+
  • Libraries:
    • swagger-parser
    • pyyaml
    • pattern

Note: Before run, execute:

$ pip install -r requirements.txt

Usage

Running:

$ python main.py <json-file-path> <RootEntityName> [swagger-file-path] [-v]
  • json-file-path - path of json file to convert
  • RootEntityName - name of root swagger definitions entity
  • swagger-file-path - path of swagger file. If the file has content, it will be merged with json converted content
  • -v - verbose mode

example.json

{
   "id": "ffe74d36-4f76-4ca6-9dd1-8d5c9b16b056",
   "name": "JSON example",
   "description": "Just a simple JSON file to convert into swagger definition",
   "someObject": {
      "someInteger": 0,
      "someNumber": 0.1,
      "someBoolean": true,
      "someNull": null,
      "someString": "Example string content"
   },
   "items": [
      {
         "name": "Item",
         "subItem": {
            "subItemsOfSubItem": [
               {
                  "foo": "bar"
               }
            ]
         }
      }
   ]
}

example.swagger.yaml

definitions:
  Root:
    type: object
    title: Root
    description: Root Entity
    properties:
      id:
        type: string
        example: ffe74d36-4f76-4ca6-9dd1-8d5c9b16b056
      name:
        type: string
        example: JSON example
      description:
        type: string
        example: Just a simple JSON file to convert into swagger definition
      someObject:
        $ref: '#/definitions/SomeObject'
      items:
        type: array
        items:
          $ref: '#/definitions/Item'
  SomeObject:
    type: object
    title: Some Object
    description: Some Object Entity
    properties:
      someInteger:
        type: integer
        example: 0
      someNumber:
        type: number
        example: 0.1
      someBoolean:
        type: boolean
        example: true
      someNull:
        type: string
        example: null
      someString:
        type: string
        example: Example string content
  Item:
    type: object
    title: Item
    description: Item Entity
    properties:
      name:
        type: string
        example: Item
      subItem:
        $ref: '#/definitions/SubItem'
  SubItem:
    type: object
    title: Sub Item
    description: Sub Item Entity
    properties:
      subItemsOfSubItem:
        type: array
        items:
          $ref: '#/definitions/SubItemsOfSubItem'
  SubItemsOfSubItem:
    type: object
    title: Sub Items Of Sub Item
    description: Sub Items Of Sub Item Entity
    properties:
      foo:
        type: string
        example: bar

Attention: Properties with same name will be merged

Example

In the JSON structure bellow, it has the "items" property in two objects:

{
   "items": [
      {
         "name": "Item",
         "subItem": {
            "items": [
               {
                  "foo": "bar"
               }
            ]
         }
      }
   ]
}

The result will merge the two "items" properties into "Item" entity:

definitions:
  RootEntity:
    type: object
    title: Root
    description: Root Entity
    properties:
      items:
        type: array
        items:
          $ref: '#/definitions/Item'
  Item:
    type: object
    title: Item
    description: Item Entity
    properties:
      name:
        type: string
        example: Item
      subItem:
        $ref: '#/definitions/SubItem'
      foo:
        type: string
        example: bar
  SubItem:
    type: object
    title: Sub Item
    description: Sub Item Entity
    properties:
      items:
        type: array
        items:
          $ref: '#/definitions/Item'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

json-to-swagger-0.0.2.tar.gz (3.8 kB view hashes)

Uploaded Source

Built Distribution

json_to_swagger-0.0.2-py3-none-any.whl (16.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page