0.0.9 • Published 4 years ago

@jdsantiagojr/json-to-schema v0.0.9

Weekly downloads
8
License
MIT
Repository
github
Last release
4 years ago

json-to-schema

Options

const jsonToSchema = require('@jdsantiagojr/json-to-schema')
const options = {
  title: 'MySchema',
  id: 'http://example.com/schema.json',
  required: false,
  additionalProperties: false,
  examples: true,
  defaults: true,
  paths: true,
  detectFormat: true
}
jsonToSchema(payload, options)

Example Input/Output

{
  "name": {
    "first": "Jason",
    "last": "Bourne"
  },
  "tenant": "123e4567-e89b-12d3-a456-426655440000",
  "age": 30,
  "*username": "jbourne",
  "*email": "jason.bourne@gmail.com",
  "createdAt": "2018-11-13T20:20:39+00:00",
  "lastLogin": {
    "time": "20:20:39+00:00",
    "date": "2018-11-13",
    "terminal": {
      "ip": "98.139.180.149"
    }
  },
  "whitelist": [
    "2607:f0d0:1002:0051:0000:0000:0000:0004",
    "2607:f0d0:1002:51::4"
  ]
}
{
  "type": "object",
  "properties": {
    "name": {
      "type": "object",
      "properties": {
        "first": {
          "type": "string",
          "default": "",
          "examples": [
            "Jason"
          ]
        },
        "last": {
          "type": "string",
          "default": "",
          "examples": [
            "Bourne"
          ]
        }
      },
      "required": [],
      "additionalProperties": false,
      "default": {},
      "$id": "#/properties/name",
      "examples": [
        {
          "first": "Jason",
          "last": "Bourne"
        }
      ]
    },
    "tenant": {
      "type": "string",
      "default": "",
      "format": "uuid",
      "examples": [
        "123e4567-e89b-12d3-a456-426655440000"
      ]
    },
    "age": {
      "type": "number",
      "default": 0,
      "examples": [
        30
      ]
    },
    "username": {
      "type": "string",
      "default": "",
      "examples": [
        "jbourne"
      ]
    },
    "email": {
      "type": "string",
      "default": "",
      "format": "email",
      "examples": [
        "jason.bourne@gmail.com"
      ]
    },
    "createdAt": {
      "type": "string",
      "default": "",
      "format": "date-time",
      "examples": [
        "2018-11-13T20:20:39+00:00"
      ]
    },
    "lastLogin": {
      "type": "object",
      "properties": {
        "time": {
          "type": "string",
          "default": "",
          "format": "time",
          "examples": [
            "20:20:39+00:00"
          ]
        },
        "date": {
          "type": "string",
          "default": "",
          "format": "date",
          "examples": [
            "2018-11-13"
          ]
        },
        "terminal": {
          "type": "object",
          "properties": {
            "ip": {
              "type": "string",
              "default": "",
              "format": "ipv4",
              "examples": [
                "98.139.180.149"
              ]
            }
          },
          "required": [],
          "additionalProperties": false,
          "default": {},
          "$id": "#/properties/lastLogin/properties/terminal",
          "examples": [
            {
              "ip": "98.139.180.149"
            }
          ]
        }
      },
      "required": [],
      "additionalProperties": false,
      "default": {},
      "$id": "#/properties/lastLogin",
      "examples": [
        {
          "time": "20:20:39+00:00",
          "date": "2018-11-13",
          "terminal": {
            "ip": "98.139.180.149"
          }
        }
      ]
    },
    "whitelist": {
      "type": "array",
      "items": {
        "type": "string",
        "default": "",
        "format": "ipv6",
        "examples": [
          "2607:f0d0:1002:0051:0000:0000:0000:0004"
        ]
      },
      "default": [],
      "examples": [
        "2607:f0d0:1002:0051:0000:0000:0000:0004",
        "2607:f0d0:1002:51::4"
      ]
    }
  },
  "required": [
    "username",
    "email"
  ],
  "additionalProperties": false,
  "$id": "http://example.com/schema.json"
}

Command Line

yarn json-to-schema -f /path/to/file.json
Options:
  --version               Show version number  [boolean]
  --file, -f              Path to JSON file  [required]
  --id  [string] [default: "http://example.com/schema.json"]
  --title  [string] [default: null]
  --required  [boolean] [default: false]
  --additionalProperties  [boolean] [default: false]
  --detectFormat  [boolean] [default: true]
  --examples  [boolean] [default: true]
  --defaults  [boolean] [default: true]
  --paths  [boolean] [default: true]
  --help, -h              Show help  [boolean]
0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.1

4 years ago

0.0.2

4 years ago