0

我使用 frisbyjs 和模块 jsonschema, jasmine-node 运行。
有这样一个方案名test.json:

{
  "error": {
    "type": "array",
    "minItems": 2,
    "items": {
      "type": "object",
      "properties": {
        "description_ru": {
          "description": "Информация об ошибке на русском языке",
          "type": "string"
        },
        "description_en":{
          "description": "Информация об ошибке на английском языке",
          "type": "string"
        }
      },
      "additionalProperties":false
    }
  }
}

我需要包括他的其他方案,例如:

{
  "title": "Не корректный email",
  "type": "object",
  "properties": {
    "status": {
      "description": "Статус операции",
      "type": "integer",
      "enum": [68]
    },
    "error": {
      "$ref": "test.json#error"
    }
  },
  "required":["status", "error"],
  "additionalProperties": false
}

两个方案都位于同一个目录中,运行验证器后我有下一个错误SchemaError: no such schema

如何解决这个问题呢?

4

1 回答 1

1

问题可能来自{"$ref": "test.json#error"}您的架构中的行。应该说没有加载到名为“test.json”的内存中的模式。

大多数 JSON Schema 实现不会自动取消引用模式,您必须告诉它每个模式的外观。

您需要为每个模式提供一个 URI 并使用validator.addSchema(require('test.json')). 请参阅README中的其他信息。

或者,使用单个文件并将定义存储在“定义”块中:

{
  "title": "Не корректный email",
  "type": "object",
  "properties": {
    "status": {
      "description": "Статус операции",
      "type": "integer",
      "enum": [68]
    },
    "error": {"$ref": "#/definitions/error"}
  },
  "required":["status", "error"],
  "additionalProperties": false,
  "definitions": {
    "error": {}
  }
}
于 2016-11-05T05:08:12.627 回答