从JSON数据生成JSON模式的工具

我们有这个json架构草案 。 我想得到我的JSON数据的样本,并为JSON模式生成一个框架,我可以手动重写,添加描述,所需等等,这些不能从具体的例子中得到。

例如,从我的inputexample.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模式?

你可能正在寻找这个:

http://www.jsonschema.net

这是一个在线工具,可以从JSONstring自动生成JSON模式。 而且你可以很容易地编辑模式。

看到这个问题得到了一些赞同,我添加新的信息(我不知道这是新的,但我当时找不到)

  • JSON模式的主页
  • Python的JSON模式validation的实现
  • 相关的黑客新闻讨论
  • Python中的json模式生成器 ,这正是我正在寻找的。

GenSON( PyPI | Github )是一个新的JSON模式生成器,可以从多个对象生成单个模式。 您也可以将模式与它合并。 它是用Python编写的,并附带一个CLI工具。

(完全披露:我是作者。)

有一个python工具可以为给定的JSON生成JSON模式: https : //github.com/perenecabuto/json_schema_g​​enerator

几个月后,我有最好的答案是我的简单工具。 它是原始的,但function。

我想要的是类似的东西。 JSON数据可以为JSON模式提供框架。 我还没有实现它,但应该可以给现有的JSON模式作为基础,以便现有的JSON模式加上JSON数据可以生成更新的JSON模式。 如果没有这样的模式作为input,则完全采用默认值。

这在迭代开发中非常有用:首次运行该工具时,JSON模式是虚拟的,但是可以根据数据的演变自动完成。

json-schema-generator是一个整洁的基于Ruby的JSON模式生成器。 它支持JSON模式的草案3和4。 它可以作为独立的可执行文件运行,也可以embedded到Ruby脚本中。

然后,如果需要,可以使用json-schema根据新生成的模式validationJSON示例。

generate-schema ( NPM | Github )接受一个JSON对象从它生成模式,一个输出是JSON模式,它是用Node.js编写的,并且带有一个REPL和ClI工具来pipe理文件。

完全披露:我是作者:)

有一个nodejs工具可以在https://github.com/krg7880/json-schema-generator中支持json schema v4

它既可以作为命令行工具,也可以作为nodejs库使用:

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

对于支持多input的离线工具,迄今为止我见过的最好的是https://github.com/wolverdude/GenSON/我想看到一个工具,它使用标准input文件名,因为我有成千上万的文件。; 但是,我用完了打开的文件描述符,因此请确保文件已closures 。 我也想看看处理recursion的JSON模式生成器。 我现在正在从JSON对象生成Java ,希望从我的Java类转到JSON Schema。 这是我的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 

有很多提到的工具,但是还有一个叫做JSON Schema推理器的logging:

https://github.com/rnd0101/json_schema_inferencer

(这不是一个库或一个产品,而是一个Python脚本)

与通常的完全披露:我是作者。

对于node.js> 6.0.0还有json-schema-by-example模块。

还有skinfer ,它可以从样本列表中推断模式,找出哪些字段是可选的。 它也可以合并模式。

它既可以用作脚本也可以用作Python库,更多信息请参见: https : //skinfer.readthedocs.org