gpt4 book ai didi

json - 从 json 中引用 JSON Schema 的方式与 XML 引用 XML Schema 的方式类似

转载 作者:行者123 更新时间:2023-12-04 01:46:51 26 4
gpt4 key购买 nike

当我定义了 XML 架构后,我就可以通过这种方式从 XML 中引用它,即 XML 必须对应于引用的架构。通过这种方式,我可以强制验证此类 XML,还可以为将要编辑此文件的人提供有值(value)的提示,因为支持 XML Schema 的 XML 编辑器将使用此类引用来生成自动完成,这种方式使编辑变得更加容易。

但是我在 JSON Schema 文档中看不到这样的引用。例如:https://json-schema.org/learn/getting-started-step-by-step.html

看起来它不是标准的一部分,或者我就是找不到它。

这是一个 XSD Schema 的例子和引用用法:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.org/definitions/product">
<xsd:element name="product">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type="xsd:long" maxOccurs="1" minOccurs="1"/>
<xsd:element name="name" type="xsd:string" maxOccurs="1" minOccurs="1"/>
<xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

这里是一个 XML,它通过引用逻辑名称来使用该架构:http://example.org/definitions/product

<product:product xmlns:product="http://example.org/definitions/product">
<id>1</id>
<name>One</name>
<description>The One</description>
</product:product>

因此,现在任何人都可以开始编辑它,如果支持,他们的编辑器会根据引用的 XSD 架构自动完成。

但是 JSON Schema 呢?

如果我有这样的 JSON 模式:

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://example.org/definitions/product",
"title": "product",
"type": "object",
"properties": {
"id": {
"type": "long"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [ "id", "name" ]
}

实际的 JSON 是这样的:

{
"id": 1,
"name": "One",
"description": "The one"
}

那么我怎样才能真正将 JSON 链接到我希望它对应的架构?

最佳答案

你是对的,它不是标准的一部分。

对于作为 HTTP 响应返回的 JSON,您可以使用 header 注明响应 JSON 由特定的 JSON 架构描述。

https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-01#section-10.1

It is RECOMMENDED that instances described by a schema provide a linkto a downloadable JSON Schema using the link relation "describedby",
as defined by Linked Data Protocol 1.0, section 8.1
[W3C.REC-ldp-20150226].

In HTTP, such links can be attached to any response using the Linkheader [RFC8288]. An example of such a header would be:

Link: http://example.com/my-hyper-schema#; rel="describedby"

关于json - 从 json 中引用 JSON Schema 的方式与 XML 引用 XML Schema 的方式类似,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54924089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com