首页 > 解决方案 > JSON Schema $ref 属性

问题描述

我正在构建一个架构,我想包含另一个架构中的属性

通用架构:

{
  "$id": "common.json",
  "definitions": {
    "string": {
      "type": "string",
    }
  }
}

架构:

{
  "properties": {
    "foo": {
      "$ref": "common.json#/definitions/string"
    }
  }
}

但是,当我对以下有效负载运行验证时:

{
  "foo": "bar"
}

我收到以下错误:

类型无效。预期:对象,给定:字符串

我已经在一个工作正常的模式验证器中运行了这个,所以不确定我哪里出错了。以防万一这与库有关,我正在使用Go JSON Schema

加载架构的代码:

loader := gojsonschema.NewSchemaLoader()

commonSchema := gojsonschema.NewStringLoader(commonString) // Just the strings above
schema := gojsonschema.NewStringLoader(schemaString) // Just the strings above

if err := loader.AddSchemas(commonSchema); err != nil {
    return nil, err
}

s, err := loader.Compile(schema)
if err != nil {
    return nil, err
}

标签: jsonschema

解决方案


推荐阅读