JSON模式中是否支持深度对象验证? [英] Is there support in JSON Schema for deep object validation?
本文介绍了JSON模式中是否支持深度对象验证?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在查看文档,但找不到任何直接或间接的解决方案。
有没有办法在不确切知道特定对象所在的情况下对JSON对象进行验证?
例如,我想验证以下子对象:
{
"grandParent": {
"parent": {
"child": {
"name": "John"
}
}
}
}
该对象可以是更大的JSON文件的一部分,结构如下:
{
"root": {
"someKey": {
"grandParent": ...
},
"grandParent": ...,
...<go in even deeper>: {
"grandParent": ...
}
}
}
我是否可以创建一个json架构来验证对象,而不管它在哪里?
GLOB中的类似示例为:root.**.grandParent.parent.child
推荐答案
您需要使用additionalProperties
、items
和递归引用的组合。
首先,我们定义要验证的结构。您必须为对象的每一层定义properties
。
2019-09
,因此需要将该引用包装在allOf
中。
然后,您需要确保对于对象,值应用了根架构,而对于数组,每项都应用了根架构。
"$ref": "#"
的使用解析为架构的根,从而创建循环引用。
某些实现可能不喜欢这样,但大多数应该能够处理它。
以下是以下架构的实时演示:https://jsonschema.dev/s/lBrZk
{
"$schema": "http://json-schema.org/draft-07/schema",
"definitions": {
"grandParentToChild": {
"properties": {
"grandParent": {
"properties": {
"parent": {
"properties": {
"child": {
"properties": {
"name": {
"type": "string"
}
}
}
}
}
}
}
}
}
},
"allOf": [
{
"$ref": "#/definitions/grandParentToChild"
}
],
"additionalProperties": {
"$ref": "#"
},
"items": {
"$ref": "#"
}
}
这篇关于JSON模式中是否支持深度对象验证?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文