我们有这个json架构draft。我想得到我的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架构?
答案 0 :(得分:86)
答案 1 :(得分:59)
总结其他答案,以下是目前提出的JSON模式生成器:
在线:
的Python:
的NodeJS:
红宝石:
答案 2 :(得分:21)
看到这个问题得到了相当多的赞成,我添加了新的信息(我不确定这是否是新的,但我当时找不到它)
答案 3 :(得分:18)
GenSON(PyPI | Github)是一个新的JSON Schema生成器,可以从多个对象生成单个模式。您还可以将模式与其合并。它是用Python编写的,附带一个CLI工具。
(完全披露:我是作者。)
答案 4 :(得分:5)
几个月后,我得到的最佳答案就是我的简单工具。它原始但功能齐全。
我想要的是与this类似的东西。 JSON数据可以为JSON模式提供框架。我还没有实现它,但应该可以将现有的JSON模式作为基础,以便现有的JSON模式和JSON数据可以生成更新的JSON模式。如果没有给出这样的模式作为输入,则采用完全默认值。
这在迭代开发中非常有用:第一次运行工具时,JSON模式是虚拟的,但可以根据数据的演变自动改进。
答案 5 :(得分:5)
有一个python工具可以为给定的JSON生成JSON模式:https://github.com/perenecabuto/json_schema_generator
答案 6 :(得分:4)
generate-schema
(NPM | Github)接受JSON对象从中生成模式,一个输出是JSON Schema,它是用Node.js编写的,附带一个REPL和ClI工具用于将文件传输到。
完全披露:我是作者:)
答案 7 :(得分:3)
json-schema-generator是一个基于Ruby的简洁JSON模式生成器。它支持JSON模式的草案3和4。它可以作为独立的可执行文件运行,也可以嵌入Ruby脚本中。
然后,如果需要,您可以使用json-schema根据新生成的架构验证JSON样本。
答案 8 :(得分:3)
有一个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);
答案 9 :(得分:2)
提到了很多工具,但还有一个名为JSON Schema inferencer的记录:
https://github.com/rnd0101/json_schema_inferencer
(它不是库或产品,而是Python脚本)
通常的完全披露:我是作者。
答案 10 :(得分:2)
对于支持多个输入的离线工具,到目前为止我见过的最好的是https://github.com/wolverdude/GenSON/我想看一个在标准输入上采用文件名的工具,因为我有数千个文件。但是,我用完了打开的文件描述符,因此请确保文件已关闭。我还想看看处理递归的JSON Schema生成器。我现在正致力于从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
答案 11 :(得分:0)
对于node.js> 6.0.0还有json-schema-by-example模块。