Инструмент для создания схемы 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?

1118   13  

13 ответов:

возможно, вы ищете это:

http://www.jsonschema.net

Это онлайн-инструмент, который может автоматически генерировать схему JSON из строки JSON. И вы можете легко редактировать схему.

суммируя другие ответы, вот генераторы схемы JSON, предложенные до сих пор:

на сайте:

Python:

NodeJS:

Ruby:

видя, что этот вопрос получает довольно много голосов, я добавляю новую информацию (я не уверен, что это новое, но я не мог найти его в то время)

GenSON (PyPI/Github) - это новый генератор схем JSON, который может генерировать одну схему из нескольких объектов. Вы также можете объединить схемы с ним. Он написан на Python и поставляется с инструментом CLI.

(полное раскрытие: я-автор.)

после нескольких месяцев, лучший ответ у меня есть мой простой инструмент. Он сырой, но функциональный.

то, что я хочу, это что-то похожее на этой. Данные JSON могут предоставить скелет для схемы JSON. Я еще не реализовал его, но должно быть возможно дать существующую схему JSON в качестве основы, чтобы существующая схема JSON плюс данные JSON могли генерировать обновленную схему JSON. Если такая схема не задана в качестве входных данных, полностью значения по умолчанию являются взятый.

Это было бы очень полезно при итерационной разработке: при первом запуске инструмента схема JSON является фиктивной, но она может быть автоматически уточнена в соответствии с эволюцией данных.

есть инструмент питона, чтобы генерировать JSON-схемы для данного формата JSON: https://github.com/perenecabuto/json_schema_generator

generate-schema (NPM/Github) принимает объект JSON генерирует схемы из него, один выход-схема JSON, он записан в узле.JS и поставляется с REPL и инструмент командной строки для трубопроводов файлов.

полное раскрытие: я-автор :)

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

    Ничего не найдено.