我们有这个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模式?


当前回答

在https://github.com/krg7880/json-schema-generator上有一个支持json模式v4的nodejs工具

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

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

schemaObj = jsonSchemaGenerator(json);

其他回答

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

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

这里提到了很多工具,但还有一种工具叫做JSON Schema inferencer:

https://github.com/rnd0101/json_schema_inferencer

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

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

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

几个月后,我得到的最好答案就是我的简单工具。它是原始的,但功能。

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

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

For the offline tools that support multiple inputs, the best I've seen so far is https://github.com/wolverdude/GenSON/ I'd like to see a tool that takes filenames on standard input because I have thousands of files. However, I run out of open file descriptors, so make sure the files are closed. I'd also like to see JSON Schema generators that handle recursion. I am now working on generating Java classes from JSON objects in hopes of going to JSON Schema from my Java classes. Here is my GenSON script if you are curious or want to identify bugs in it.

#!/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