JSON Schema のバリデーション
JSON Schema を勉強中であります。
その名の通り JSON でリソースそのものやリソースの操作まで表現できる面白いツールだと思います。
しかし、 JSON Schema は往々にして複雑になりがちで、書く量が多くなると typo も増えてきます。
そこで今回は JSON Schema のバリデーションに使えるツールをメモ程度に書いておきます。
validate-schema コマンド
まずは validate-schema
コマンドから。簡単なバリデーションをしてくれる。
gem の json_schema パッケージに入っているのでインストール
$ gem install json_schema
Password:
Fetching: json_schema-0.6.0.gem (100%)
Successfully installed json_schema-0.6.0
...
1 gem installed
インストールできたらオプションに -d
をつけて実行
これがバリデーションに通った例
$ validate-schema -d json_schema/directory/test.json
json_schema/directory/test.json is valid.
バリデーションに落ちるとこうなる
$ validate-schema -d json_schema/directory/test.json
json_schema/directory/test.json: Invalid JSON. Try to validate using `jsonlint`.
なんと別のツールを使って確かめろということなので、以下につづく。
jsonlint コマンド
さて、 validate-schema に jsonlint を使え、と言われたので早速インストールする
$ npm install jsonlint -g
npm http GET https://registry.npmjs.org/jsonlint
npm http 200 https://registry.npmjs.org/jsonlint
...
/usr/local/bin/jsonlint -> /usr/local/lib/node_modules/jsonlint/lib/cli.js
jsonlint@1.6.2 /usr/local/lib/node_modules/jsonlint
├── nomnom@1.8.1 (underscore@1.6.0, chalk@0.4.0)
└── JSV@4.0.2
インストールが完了したら早速チェック
$ jsonlint json_schema/directory/test.json
[Error: Parse error on line 20:
..."], } },
----------------------^
Expecting 'STRING', got '}']
今度はバリデーションに落ちる理由と場所を示してくれるのですぐに修正できる
だいたいバリデーションに落ちるときは ,
のつけ過ぎが多い
これらのツールで無駄にハマる時間をなくしたいものです。
validate-schema コマンド(再)
今回は JSON Schema 単体のチェックだったので validate-schema
コマンドが使い勝手悪く見えるので補足
もともとは、ある JSON データが JSON Schema に則っているかのバリデーションをするツールである
$ validate-schema json_schema/check.json test.json
test.json#/emotion: failed schema #/properties/emotion: embarrassment is not a member of ["pleasure", "anger", "sadness", "enjoyment"].