Инструмент для создания схемы JSON из данных JSON [закрыто]
у нас есть эта схема json проект. Я хотел бы получить образец моих данных JSON и создать скелет для схемы JSON, которую я могу переработать вручную, добавив такие вещи, как описание, обязательные и т. д., которые не могут быть выведены из конкретных примеров.
например, из моего ввода example.json:
{
"foo": "lorem",
"bar": "ipsum"
}
Я бы запустил свой инструмент json_schema_generator и получил:
{ "foo": {
"type" : "string",
"required" : true,
"description" : "unknown"
},
"bar": {
"type" : "string",
"required" : true,
"description" : "unknown"
}
}
этот пример был закодирован вручную, так что это может быть ошибки.
Есть ли какой-либо инструмент, который может помочь мне с преобразованием JSON - > JSON schema?
13 ответов:
возможно, вы ищете это:
Это онлайн-инструмент, который может автоматически генерировать схему JSON из строки JSON. И вы можете легко редактировать схему.
суммируя другие ответы, вот генераторы схемы JSON, предложенные до сих пор:
на сайте:
- http://www.jsonschema.net (1 вход)
- https://easy-json-schema.github.io (1 вход)
Python:
- https://github.com/gonvaled/jskemator (1 вход, но позволяет итерация)
- https://github.com/perenecabuto/json_schema_generator (1 вход)
- https://github.com/rnd0101/json_schema_inferencer (1 вход я думаю)
- https://pypi.python.org/pypi/genson/ (Несколько входов)
- https://pypi.python.org/pypi/skinfer (несколько входы)
NodeJS:
- https://github.com/Nijikokun/generate-schema (1 вход?)
- https://github.com/easy-json-schema/easy-json-schema (1 вход)
Ruby:
видя, что этот вопрос получает довольно много голосов, я добавляю новую информацию (я не уверен, что это новое, но я не мог найти его в то время)
- главная схема JSON
- реализация проверки схемы JSON для Python
- связанные хакер новости обсуждение
- генератор схем json в python, что я и искал.
после нескольких месяцев, лучший ответ у меня есть мой простой инструмент. Он сырой, но функциональный.
то, что я хочу, это что-то похожее на этой. Данные JSON могут предоставить скелет для схемы JSON. Я еще не реализовал его, но должно быть возможно дать существующую схему JSON в качестве основы, чтобы существующая схема JSON плюс данные JSON могли генерировать обновленную схему JSON. Если такая схема не задана в качестве входных данных, полностью значения по умолчанию являются взятый.
Это было бы очень полезно при итерационной разработке: при первом запуске инструмента схема JSON является фиктивной, но она может быть автоматически уточнена в соответствии с эволюцией данных.
есть инструмент питона, чтобы генерировать JSON-схемы для данного формата JSON: https://github.com/perenecabuto/json_schema_generator
JSON-schema-generator - это аккуратный генератор схем JSON на основе Ruby. Он поддерживает как проект 3, так и 4 схемы JSON. Он может быть запущен как автономный исполняемый файл, или он может быть встроен в сценарий Ruby.
затем вы можете использовать в JSON-схемы чтобы проверить образцы JSON для вашей вновь созданной схемы, если вы хотите.
есть инструмент nodejs, который поддерживает схему json v4 в https://github.com/krg7880/json-schema-generator
он работает либо как инструмент командной строки, либо как библиотека nodejs:
var jsonSchemaGenerator = require('json-schema-generator'), obj = { some: { object: true } }, schemaObj; schemaObj = jsonSchemaGenerator(json);
есть много инструментов, упомянутых, но еще один называется JSON Schema inferencer для записи:
https://github.com/rnd0101/json_schema_inferencer
(Это не библиотека или продукт, а скрипт Python)
с обычным полным раскрытием: я-автор.
для автономных инструментов, которые поддерживают несколько входов, лучшее, что я видел до сих пор, это 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
для узла.js > 6.0.0 есть также json-schema-by-example модуль.
есть еще skinfer, который может вывести схему из списка образцов, находя, какие поля являются необязательными. Он также может объединять схемы.
его можно использовать как в качестве скрипта, так и в качестве библиотеки Python, см. Подробнее по адресу:https://skinfer.readthedocs.org
Comments