JSON schema - 支持字段的正则表达式

JSON schema - support regular expression for field

我想使用以下库 gojsonschema 来验证 json 结构, 目前我对下面的例子有两个问题

https://github.com/xeipuuv/gojsonschema

  1. 什么是 #/definitions/....,它的目的是什么?
  2. 名称应包含以下内容:

{required: true, unique: true, pattern: '/^[A-Za-z0-9_\-\.]+$/'}

独特之处在于,如果我在架构中提交了另一个名称,它应该是唯一的,我如何使用 json架构验证它?

var schema = `
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "name": ...
    "properties": {
        "username": {"$ref": "#/definitions/name"},

更新

我找到的是这个 https://spacetelescope.github.io/understanding-json-schema/reference/regular_expressions.html

但是我应该如何在我提供的 json 中检查它

应该是这样吗

var schema = `
    {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "type": "object",
        "name": {
        "type": "object",
        "pattern":'/^[A-Za-z0-9_\-\.]+$/'
}

        "properties": {
            "username": {"$ref": "#/definitions/name"},
  1. #/definitions/name 是另一个架构的 internal reference。该文档应包含如下所示的引用部分:

    "definitions": {
        "name": {
             ...
        }
    }
    
  2. JSON 架构没有 unique 验证器。有一个 uniqueItems 验证器可以与数组一起使用,但我认为这不是您要找的。

https://datatracker.ietf.org/doc/draft-handrews-json-schema-validation/?include_text=1

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {  
        "username": {  
            "type": "array",
            "items": {
                "type": "string",
                "pattern": "/^[A-Za-z0-9_\-\.]+$/"
            },
            "uniqueItems": true
         }
    },
    "required": [  
         "username"
    ]
}

1:"definitions" 关键字为 模式作者将 re-usable JSON 模式内联到更通用的模式中 模式。关键字不直接影响验证结果。

此关键字的值必须是 object。这个的每个成员值 object 必须是有效的 JSON 架构。

举个例子,这里有一个模式描述了一组正 整数,其中正整数约束是一个子模式 "definitions":

  {
   "type": "array",
   "items": { "$ref": "#/definitions/positiveInteger" },
   "definitions": {
       "positiveInteger": {
           "type": "integer",
           "exclusiveMinimum": 0
       }
   }
   }

2: uniqueItems

此关键字的值必须是布尔值。

如果这个关键字的布尔值为假,实例验证 成功地。如果它的布尔值为 true,则实例验证 如果它的所有元素都是唯一的,则成功。

省略此关键字与值为 false 的行为相同。


需要

这个关键字的值必须是一个数组。这个数组的元素, 如果有的话,必须是字符串,并且必须是唯一的。

一个 object 实例对该关键字有效,如果 array 是实例中 属性 的名称。

省略此关键字与空数组具有相同的行为。


属性

{
"type": "object",
"properties": {
    "progBinaryName": {
        "type": "string",
        "pattern": "^[A-Za-z0-9 -_]+_Prog\.(exe|EXE)$"
    }
}
}

"properties" 的值必须是 object。这个的每个值 object 必须是有效的 JSON 架构。

此关键字确定 child 个实例如何验证 object 个,并且 不直接验证直接实例本身。

如果对于同时出现在 实例并作为此关键字值内的名称,child 该名称的实例成功验证了 相应的模式。

省略此关键字与空 object 具有相同的行为。