217

我们有这个 json 模式草稿。我想获取我的 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 模式?

4

12 回答 12

125

总结其他答案,这里是迄今为止提出的 JSON 模式生成器:

在线的:

Python:

节点JS:

红宝石:

于 2015-05-18T03:13:04.530 回答
95

你可能正在寻找这个:

http://www.jsonschema.net

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

于 2012-05-30T03:13:43.233 回答
40

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

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

于 2014-11-30T07:19:36.603 回答
23

看到这个问题得到了相当多的支持,我添加了新信息(我不确定这是否是新的,但我当时找不到)

于 2013-05-06T17:06:01.227 回答
6

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

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

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

于 2012-07-12T14:17:15.563 回答
5

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

于 2013-05-07T21:02:14.130 回答
5

generate-schema( NPM | Github ) 接受一个 JSON 对象,从中生成模式,一个输出是 JSON 模式,它是用 Node.js 编写的,并带有一个 REPL 和 CLI 工具,用于将文件导入。

全面披露:我是作者 :)

于 2015-02-23T22:50:00.760 回答
5

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

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

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

schemaObj = jsonSchemaGenerator(json);
于 2016-01-26T14:59:31.483 回答
3

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

然后,如果需要,您可以使用json-schema针对新生成的模式验证 JSON 样本。

于 2014-07-03T21:17:41.940 回答
3

对于支持多个输入的离线工具,到目前为止我看到的最好的是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 
于 2015-11-07T08:27:47.730 回答
2

提到了很多工具,但还有一个称为 JSON Schema inferencer 以供记录:

https://github.com/rnd0101/json_schema_inferencer

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

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

于 2015-05-11T08:33:20.273 回答
1

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

于 2016-07-24T17:06:20.757 回答