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

dan*_*ast 165 reflection validation json jsonschema

我们有这个json架构草案.我想得到我的JSON数据样本并为JSON模式生成一个框架,我可以手动返工,添加描述,必需等内容,这些内容不能从具体示例中获取.

例如,从我的输入example.json:

{
    "foo": "lorem", 
    "bar": "ipsum"
}
Run Code Online (Sandbox Code Playgroud)

我会运行我的json_schema_g​​enerator工具,并得到:

{ "foo": {
    "type" : "string",
    "required" : true,
    "description" : "unknown"
  },
  "bar": {
    "type" : "string",
    "required" : true,
    "description" : "unknown"
  }
}
Run Code Online (Sandbox Code Playgroud)

此示例已手动编码,因此可能存在错误.是否有任何工具可以帮助我转换JSON - > JSON模式?

Gre*_* Su 89

你可能正在寻找这个:

http://www.jsonschema.net

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

  • 一个方便的起点。但是请注意,在此页其他地方标识了jsonschema.net的报告问题,并讨论了将脱机或至少可通过API访问的工具包含在开发工作流中,允许在以后的示例中更新架构等问题的原因。史蒂夫·贝内特(Steve Bennett)的选项列表。 (2认同)
  • 旧站点肯定不够好。[JSONSchema.Net](https://JSONSchema.Net)现在已被重写。它更加健壮。如果您有任何问题,请在GitHub上报告它们,我将很乐意解决它们:https://github.com/jackwootton/json-schema (2认同)
  • 警告 - 不幸的是,该网站现在有一个登录墙:( (2认同)

wol*_*ude 23

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

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


dan*_*ast 21

看到这个问题得到了一些赞成,我添加了新的信息(我不确定这是否是新的,但我当时找不到)


dan*_*ast 5

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

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

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

  • 基本上,该工具的问题在于它是一个*在线*工具.我需要它在我的开发环境中本地运行它,有时自动作为其他任务的一部分."复制在这里,粘贴那里"工具对我没有帮助.如果它有一个足够好的REST API. (12认同)
  • 好奇@Green Su的建议如何不能满足您的需求.我想你正在描述一个提供jumpstarter的实用程序(你的术语是'骨架') - 类似于脚手架代码生成器? (2认同)
  • @justSteve:除了使用复制粘贴工作流程之外,在线工具仍然出现问题(在原始问题提出 4 年后)。我有 json 对象,该工具为其生成了不正确的模式,但尚未将它们减少到最少的测试用例以作为错误报告提交。 (2认同)

小智 5

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

  • 自2013年以来一直未维护。它不支持Python3。此外,它仅支持较旧的草稿,即“ draft-03”。 (2认同)

Nij*_*kun 5

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

完全披露:我是作者:)


Joh*_*sen 5

There's a nodejs tool which supports json schema v4 at https://github.com/krg7880/json-schema-generator

It works either as a command line tool, or as a nodejs library:

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

schemaObj = jsonSchemaGenerator(json);
Run Code Online (Sandbox Code Playgroud)