例如,文件系统的架构,目录包含文件列表。该模式由文件规范,下一个子类型“ image”和另一个“ text”组成。
在底部是主目录架构。目录具有属性内容,该属性内容是应作为文件子类型的项目的数组。
基本上,我正在寻找一种告诉验证器从正在验证的json对象中的属性中查找“ $ ref”的值的方法。
示例json:
{
"name":"A directory",
"content":[
{
"fileType":"http://x.y.z/fs-schema.json#definitions/image",
"name":"an-image.png",
"width":1024,
"height":800
}
{
"fileType":"http://x.y.z/fs-schema.json#definitions/text",
"name":"readme.txt",
"lineCount":101
}
{
"fileType":"http://x.y.z/extended-fs-schema-video.json",
"name":"demo.mp4",
"hd":true
}
]
}
“伪”模式 说明“图像”和“文本”定义包含在同一模式中,但它们可能在其他位置定义
{
"id": "http://x.y.z/fs-schema.json",
"definitions": {
"file": {
"type": "object",
"properties": {
"name": { "type": "string" },
"fileType": {
"type": "string",
"format": "uri"
}
}
},
"image": {
"allOf": [
{ "$ref": "#definitions/file" },
{
"properties": {
"width": { "type": "integer" },
"height": { "type": "integer"}
}
}
]
},
"text": {
"allOf": [
{ "$ref": "#definitions/file" },
{ "properties": { "lineCount": { "type": "integer"}}}
]
}
},
"type": "object",
"properties": {
"name": { "type": "string"},
"content": {
"type": "array",
"items": {
"allOf": [
{ "$ref": "#definitions/file" },
{ *"$refFromProperty"*: "fileType" } // the magic thing
]
}
}
}
}
仅JSON模式的验证部分无法做到这一点-它表示一个固定的结构。您需要的是在 验证时 解析/引用架构。
但是,您可以使用JSON Hyper-Schema和一个rel="describedby"
链接来表达这一点:
{
"title": "Directory entry",
"type": "object",
"properties": {
"fileType": {"type": "string", "format": "uri"}
},
"links": [{
"rel": "describedby",
"href": "{+fileType}"
}]
}
因此在这里,它从中获取值,"fileType"
并使用它来计算具有“描述者”关系的链接-这意味着“此位置的模式还描述了当前数据”。
问题是大多数验证者对任何链接(包括“由…描述的”链接)都没有任何注意。您需要找到一个“超级验证器”。
更新 : tv4库已将此添加为功能
我想使用模式验证JSON(目前草案6,但如果需要,我们可以升级)。我的案例是一个具有属性的对象,其值都具有相同的结构,例如: 是否有办法为一般属性值设置验证模式?类似的东西: 谢谢你。
我一直在努力使我的JSON模式正确。我有一个属性,我必须根据它来确定所需的属性。下面是我的示例,我希望通过验证,因为不存在。 这是我希望通过验证的JSON 类似地,如果是,那么上述两个JSON的验证都应该通过。
我希望创建的XML在头元素中具有xsi: noNamespaceSchemaPlace和xmls: xsi属性(xsi: noNamespaceSchemaPlace="Something.xsd"xmls: xsi="http://www.w3.org/2001/XMLSchema-instance")。以任何方式使用模式——只存储这些属性和值。 对此有具体的注释吗?我可以创建一个恒定的XmlA
据我所知,有一些方法可以根据RDF模式验证序列化的RDF(例如RDF/XML)(如何用您的RDF模式验证RDF)。还有,从RDF/XML到JSON-LD序列化格式的各种转换器(反之亦然)。在Internet上搜索,我找不到一种直接的方法来验证JSON-LD与某种JSON模式的关系,就像RDF模式与RDF(/XML)的关系一样。当然,有各种各样的JSON-LD文档表单,所以我假设一个模式不能很容易地
我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根
我在验证JSON时遇到了一些错误。我无法理解这些错误,有人能帮我解释一下吗。 } 这是json。 消息:JSON与“anyOf”中的任何模式都不匹配。架构路径: 消息:无效类型。应为数组,但得到的是字符串。架构路径: 消息:值“标识”载体“未在枚举中定义。架构路径: 消息:字符串“uui # abb 0 ef 56-8562-4056-aa62-AFB 758 a 150 ad”未根据格式“uri