web-dev-qa-db-ja.com

JSONデータからJSONスキーマを生成するツール

このJSONスキーマ draft があります。 JSONデータのサンプルを取得し、JSONスキーマのスケルトンを生成したいと思います。これは、特定の例から推測できない説明、必須などの追加を手動で行うことができます。

たとえば、私の入力example.jsonから:

{
    "foo": "lorem", 
    "bar": "ipsum"
}

私はjson_schema_g​​eneratorツールを実行し、以下を取得します。

{ "foo": {
    "type" : "string",
    "required" : true,
    "description" : "unknown"
  },
  "bar": {
    "type" : "string",
    "required" : true,
    "description" : "unknown"
  }
}

この例は手動でコーディングされているため、エラーがある可能性があります。 JSON-> JSONスキーマの変換に役立つツールはありますか?

153
dangonfast

この質問にかなりの賛成票が寄せられているのを見て、新しい情報を追加します(これが新しいかどうかはわかりませんが、当時は見つかりませんでした)

21
dangonfast

あなたはこれを探しているかもしれません:

http://www.jsonschema.net

これは、JSON文字列からJSONスキーマを自動的に生成できるオンラインツールです。また、スキーマを簡単に編集できます。

86
Green Su

他の答えを要約すると、これまでに提案されたJSONスキーマジェネレーターは次のとおりです。

オンライン:

Python:

NodeJS:

ルビー:

61
Steve Bennett

GenSON( PyPI | Github )は、複数のオブジェクトから単一のスキーマを生成できる新しいJSONスキーマジェネレーターです。スキーマをそれにマージすることもできます。 Pythonで書かれており、CLIツールが付属しています。

(完全な開示:著者です。)

19
wolverdude

数ヶ月後、私が持っている最良の答えは私の簡単なツールです。生ですが機能的です。

私が欲しいのは this に似たものです。 JSONデータは、JSONスキーマのスケルトンを提供できます。まだ実装していませんが、既存のJSONスキーマとJSONデータが更新されたJSONスキーマを生成できるように、既存のJSONスキーマを基礎として提供することが可能です。そのようなスキーマが入力として与えられない場合、完全にデフォルト値が使用されます。

これは、反復開発で非常に役立ちます。ツールを初めて実行するとき、JSONスキーマはダミーですが、データの進化に応じて自動的に調整できます。

5
dangonfast

特定のJSONのJSONスキーマを生成するPythonツールがあります。 https://github.com/perenecabuto/json_schema_g​​enerator

5

generate-schemaNPM | Github )はJSONオブジェクトを受け取り、そこからスキーマを生成します。1つの出力はJSONスキーマで、Node.jsで記述され、REPLおよびファイルをパイプするためのClIツール。

完全な開示:私は著者です:)

4
Nijikokun

https://github.com/krg7880/json-schema-generator にjsonスキーマv4をサポートするnodejsツールがあります

コマンドラインツールとして、またはnodejsライブラリとして機能します。

var jsonSchemaGenerator = require('json-schema-generator'),
    obj = { some: { object: true } },
    schemaObj;

schemaObj = jsonSchemaGenerator(json);

json-schema-generator は、RubyベースのJSONスキーマジェネレーターです。 JSONスキーマのドラフト3と4の両方をサポートしています。スタンドアロンの実行可能ファイルとして実行するか、Rubyスクリプト内に埋め込むことができます。

次に、 json-schema を使用して、必要に応じて、新しく生成されたスキーマに対してJSONサンプルを検証できます。

3
HappyCoder86

多くのツールが言及されていますが、もう1つはレコード用のJSONスキーマ推論と呼ばれています。

https://github.com/rnd0101/json_schema_inferencer

(ライブラリまたは製品ではなく、Pythonスクリプトです)

通常の完全開示:私は著者です。

2
Roman Susi

複数の入力をサポートするオフラインツールの場合、これまで見た中で最高のものは https://github.com/wolverdude/GenSON/ 標準のファイル名を取得するツールが見たいです。何千ものファイルがあるので入力してください。ただし、開いているファイル記述子が不足しているため、ファイルがclosedであることを確認してください。また、再帰を処理するJSONスキーマジェネレーターも見たいです。私は現在、JavaクラスからJSONスキーマに行くことを期待して、JSONオブジェクトからJavaclassesの生成に取り組んでいます。興味がある場合、またはバグを特定したい場合のGenSONスクリプトを次に示します。

#!/bin/sh
ulimit -n 4096
rm x3d*json
cat /dev/null > x3d.json
find ~/Downloads/www.web3d.org/x3d/content/examples -name '*json' -      print| xargs node goodJSON.js | xargs python bin/genson.py -i 2 -s     x3d.json >> x3d.json
split -p '^{' x3d.json x3d.json
python bin/genson.py -i 2 -s x3d.jsonaa -s x3d.jsonab /Users/johncarlson/Downloads/www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter02-GeometryPrimitives/Box.json > x3dmerge.json 
2
John Carlson

Node.js> 6.0.0の場合、 json-schema-by-example モジュールもあります。

0
Jerome WAGNER