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

时间:2011-09-07 23:14:16

标签: json validation reflection jsonschema

我们有这个json架构draft。我想得到我的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架构?

12 个答案:

答案 0 :(得分:86)

您可能正在寻找:

http://www.jsonschema.net

这是一个可以从JSON字符串自动生成JSON模式的在线工具。您可以轻松编辑架构。

答案 1 :(得分:59)

答案 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-schemaNPM | 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模块。