コフス技術ブログ

VSCodeにてtsファイルよりJSON Schemaを生成する

VSCodeにてtsファイルからJSON Schemaを生成したい場合はTypescript JSON schema generatorを使用すると一発で生成する事が出来ます。

例えば以下のtsファイルがあった時、

Foo.ts
import Bar from './Bar'

export default interface Foo {
  hoge: number
  piyo: string
  bar?: Bar[]
}
Bar.ts
type Bar = {
  [keyof in 'bar1' | 'bar2']: number
}

export default Bar

FooのJSON Schemaを生成する場合はFoo.tsを開いた上で、コマンドパレットからGenerate Json Schema for typeを選択します。

生成元のinterfaceのリストが表示されるので上記の場合はFooを選択すると生成が始まり、数秒程でjsonを得ることが出来ます。

生成されたjson-schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$ref": "#/definitions/Foo",
  "definitions": {
    "Foo": {
      "type": "object",
      "properties": {
        "hoge": {
          "type": "number"
        },
        "piyo": {
          "type": "string"
        },
        "bar": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "bar1": {
                "type": "number"
              },
              "bar2": {
                "type": "number"
              }
            },
            "required": [
              "bar1",
              "bar2"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "hoge",
        "piyo"
      ],
      "additionalProperties": false
    }
  }
}

とにかくサクッと生成したい場合には便利ですね。

ちなみに以下の様なライブラリを導入するとCLI経由でtsファイルからJSON Schemaを生成可能です。複数生成したい場合、バッチに組み込みたい場合はライブラリを導入してみると良さそうです。