217

この json スキーマドラフトがあります。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 スキーマの変換に役立つツールはありますか?

4

12 に答える 12

125

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

オンライン:

パイソン:

ノードJS:

ルビー:

于 2015-05-18T03:13:04.530 に答える
95

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

http://www.jsonschema.net

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

于 2012-05-30T03:13:43.233 に答える
40

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

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

于 2014-11-30T07:19:36.603 に答える
23

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

于 2013-05-06T17:06:01.227 に答える
6

数か月後、私が得た最良の答えは、私のシンプルなツールです。それは生ですが機能的です。

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

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

于 2012-07-12T14:17:15.563 に答える
5

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);
于 2016-01-26T14:59:31.483 に答える
5

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

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

于 2015-02-23T22:50:00.760 に答える
3

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

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

于 2014-07-03T21:17:41.940 に答える
3

複数の入力をサポートするオフライン ツールについては、これまでに見た中で最高のものはhttps://github.com/wolverdude/GenSON/です。 何千ものファイルがあるため、標準入力でファイル名を取得するツールが欲しいです。 . ただし、開いているファイル記述子が不足しているため、ファイルが閉じていることを確認してください。また、再帰を処理する JSON スキーマ ジェネレーターも見たいと思っています。私は現在、Javaクラスから JSON スキーマに移行することを期待して、JSON オブジェクトからJavaクラスを生成する作業を行っています。興味がある場合、またはバグを特定したい場合は、ここに私の 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 
于 2015-11-07T08:27:47.730 に答える
2

言及されているツールはたくさんありますが、記録のために JSON Schema inferencer と呼ばれるもう 1 つのツールがあります。

https://github.com/rnd0101/json_schema_inferencer

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

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

于 2015-05-11T08:33:20.273 に答える