Mar*_*ria 5 java json jsonschema
我的问题是如何知道使用哪个 JSON 模式来验证特定的 JSON 文档?我在 id 字段中指定了模式的 URL。这够了吗?我应该把 id 放在 JSON 中吗?我不确定我是否了解如何将 JSON 连接到特定的 JSON 架构。
这是我的架构
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "url/schema.json",
"title": "title",
"definitions": {
"emailObject": {
"type": "object",
"properties":{
"name": {
"description": "The name of the customer",
"type": "string",
"maxLength": 200
},
"email": {
"description": "The email of the customer",
"type": "string",
"format": "email",
"maxLength": 100
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据规范10.1:
建议模式/配置文件描述的实例使用链接关系“ descriptedby ”提供可下载 JSON 模式的链接,如链接数据协议 1.0 第 8.1 节 [W3C.REC-ldp-20150226] 所定义。(强调我的)
这似乎准确地描述了您所需要的行为,但是,仔细阅读链接数据协议第 8.1 节,我们仍然一无所知:
B描述的关系 A断言资源 B 提供了资源 A 的描述。对 A 或 B 的格式或表示没有任何限制,对任一资源也没有任何进一步的限制(强调我的)
经过快速谷歌搜索后,我发现了这个问题,乍一看似乎与您的问题重复。然而,经过更深入的检查,问题实际上是关于模式内的继承,而不是关于模式从其支持的实例的引用。
有趣的是,其中一个答案提供了一种利用 JSON-Hyper-schema 标准的解决方案 - 尝试扩展 JSON-schema 标准以支持应用程序级语义的定义。
它实现这一点的方法是使用links集合:
{
...
"links":[
{
"rel":"describedby",
"href":"{+fileType}"
}
]
}
Run Code Online (Sandbox Code Playgroud)
事实证明,这是基于另一个标准RFC5988 - Web Linking,它恰好是允许我们将 CSS 加载到 HTML 页面中的相同标准。
正如@Jason 在他的评论中指出的那样 -
您的第一个报价(来自规范)是正确的方法。generated by 的链接数据定义与 JSON Schema 规范并不矛盾。这是一个特意宽泛的定义,因此它可以应用于描述数据的任何媒体类型。其中包括 JSON 架构、XML 架构或其他任何内容。
因此,在架构实例中包含链接集合似乎是引用架构的正确方法。因此,根据您的具体情况,您可以这样做:
{
...
"links":[
{
"rel":"describedby",
"href":"url/schema.json" // I assume!!
}
]
}
Run Code Online (Sandbox Code Playgroud)
尽管这可能是正确的,但我不知道有多少 JSON 解析器在通过链接解析为实际模式时会尊重这一点。
| 归档时间: |
|
| 查看次数: |
674 次 |
| 最近记录: |