如何基于json模式生成模板JSON

时间:2019-05-06 15:06:07

标签: json documentation jsonschema

我正在一个项目中,我需要将JSON文件添加到存储库中以生成一些测试数据。我需要记录该文件的格式,以便每个新开发人员都可以依靠该文档来生成新文件。

我正在考虑使用json-schema进行文档记录,我发现了一个非常有用的在线工具,名为jsonschema(肯定大多数人已经知道了)。我需要知道的是,是否有一些工具可以执行逆任务,即:基于模式,基于模式生成模板JSON。例如,拥有模式

{
  "definitions": {}, 
  "$schema": "http://json-schema.org/draft-07/schema#", 
  "$id": "http://example.com/root.json", 
  "type": "object", 
  "title": "The Root Schema", 
  "required": [
    "checked", 
    "dimensions", 
    "id", 
    "name", 
    "price", 
    "tags"
  ], 
  "properties": {
    "checked": {
      "$id": "#/properties/checked", 
      "type": "boolean", 
      "title": "The Checked Schema", 
      "default": false, 
      "examples": [
        false
      ]
    }, 
    "dimensions": {
      "$id": "#/properties/dimensions", 
      "type": "object", 
      "title": "The Dimensions Schema", 
      "required": [
        "width", 
        "height"
      ], 
      "properties": {
        "width": {
          "$id": "#/properties/dimensions/properties/width", 
          "type": "integer", 
          "title": "The Width Schema", 
          "default": 0, 
          "examples": [
            5
          ]
        }, 
        "height": {
          "$id": "#/properties/dimensions/properties/height", 
          "type": "integer", 
          "title": "The Height Schema", 
          "default": 0, 
          "examples": [
            10
          ]
        }
      }
    }, 
    "id": {
      "$id": "#/properties/id", 
      "type": "integer", 
      "title": "The Id Schema", 
      "default": 0, 
      "examples": [
        1
      ]
    }, 
    "name": {
      "$id": "#/properties/name", 
      "type": "string", 
      "title": "The Name Schema", 
      "default": "", 
      "examples": [
        "A green door"
      ], 
      "pattern": "^(.*)$"
    }, 
    "price": {
      "$id": "#/properties/price", 
      "type": "number", 
      "title": "The Price Schema", 
      "default": 0.0, 
      "examples": [
        12.5
      ]
    }, 
    "tags": {
      "$id": "#/properties/tags", 
      "type": "array", 
      "title": "The Tags Schema", 
      "items": {
        "$id": "#/properties/tags/items", 
        "type": "string", 
        "title": "The Items Schema", 
        "default": "", 
        "examples": [
          "home", 
          "green"
        ], 
        "pattern": "^(.*)$"
      }
    }
  }
}

运行该工具,我应该得到类似的东西

{
  "checked": false,
  "dimensions": {
    "width": 0,
    "height": 0
  },
  "id": 0,
  "name": "",
  "price": 0.0,
  "tags": [
    ""
  ]
}

,这是具有默认值的模板。首选在线工具,但是如果您可以向我提供一些Node / Ruby实用程序,那么它也将受到欢迎。

预先感谢您的回答/评论。最好的问候

1 个答案:

答案 0 :(得分:0)

通过一些研究,我发现json-schema-faker.js完成了检查useDefaultValue选项的要求