JSON schema - 支持字段的正则表达式
JSON schema - support regular expression for field
我想使用以下库 gojsonschema
来验证 json 结构,
目前我对下面的例子有两个问题
https://github.com/xeipuuv/gojsonschema
- 什么是
#/definitions/....
,它的目的是什么?
- 名称应包含以下内容:
{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"},
#/definitions/name
是另一个架构的 internal reference。该文档应包含如下所示的引用部分:
"definitions": {
"name": {
...
}
}
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 具有相同的行为。
我想使用以下库 gojsonschema
来验证 json 结构,
目前我对下面的例子有两个问题
https://github.com/xeipuuv/gojsonschema
- 什么是
#/definitions/....
,它的目的是什么? - 名称应包含以下内容:
{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"},
#/definitions/name
是另一个架构的 internal reference。该文档应包含如下所示的引用部分:"definitions": { "name": { ... } }
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 具有相同的行为。