错误:无法解析来自 id 的引用 error.json #

Posted

技术标签:

【中文标题】错误:无法解析来自 id 的引用 error.json #【英文标题】:Error: can't resolve reference error.json from id # 【发布时间】:2017-03-22 13:22:39 【问题描述】:

我不明白如何正确引用其他架构。 我使用了ajv,并有下两个架构

第一个架构不正确-email.json:


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

第二个模式error.json:


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

运行测试后出现此错误

矿井验证方式:

var valid = ajv.validate(require("../schema/login/incorrect-email.json"), data);

我需要参考本地架构 error.json,而不是远程服务器等。 请告诉我,我可以在哪里添加 id 在这个模式和 $ref 以使用 ajv 进行正确解析

【问题讨论】:

您需要将ids 分配给您的参考。阅读此github.com/epoberezkin/ajv/issues/47 和github.com/epoberezkin/ajv/issues/185 【参考方案1】:

您可以在不更改架构文件的情况下执行以下操作:

ajv.addSchema(require('./incorrect-email.json', 'incorrect-email.json'));
ajv.addSchema(require('./error.json'), 'error.json');
var valid = ajv.validate('incorrect-email.json', data);

您可以在模式本身中指定 ID 属性,而不是在 addSchema 调用中指定模式 ID(推荐)。在任何情况下,默认情况下 Ajv 都不会使用任何 IO 来加载模式,模式必须使用 addSchema 方法预加载。当您使用 compileAsync 方法时,您可以动态(和异步)加载模式,但您必须自己指定加载机制(可以是任何东西 - fs、http 等)。

【讨论】:

谢谢,成功了!一个问题,如果附件多于两个,原来我必须编写一个处理程序来绕过所有嵌入式电路?对不起我的英语。 您可以将所有架构添加到 Ajv 实例中,只要它们具有不同的 ID 即可

以上是关于错误:无法解析来自 id 的引用 error.json #的主要内容,如果未能解决你的问题,请参考以下文章

无法解析剩余部分:来自 'sobj.id==obj.id' 的 '==obj.id'

无法解析接近的表名

解析来自 JSON 对象的循环引用

并排配置错误,无法解析引用 mscorlib

为啥我在 Kotlin 中键入视图名称/ID 时会出现“未解析的引用”错误?

WCF 发布错误:元数据包含无法解析的引用: