【发布时间】:2019-01-18 13:50:30
【问题描述】:
我正在构建一个具有属性boundary 的 JSON 模式。我正在引用运行良好的 GeoJson 模式。现在我想将我的边界限制为 Polygon 类型,它是来自 GeoJson 架构的 enum。
如何做到这一点?
这是我的架构的相关部分:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"plot": {
"type": "object",
"properties": {
"boundary": {
"description": "The boundary of the plot",
"title": "Plot boundary",
"additionalProperties": false,
"required": [
"type",
"coordinates",
"crs"
],
"TODO": "Restrict to (multi)polygons only.",
"$ref": "http://json.schemastore.org/geojson"
}
}
}
}
}
这是我的验证 json:
{
"plot":
{
"boundary": {
"crs": {
"type": "name",
"properties": {
"name": "EPSG:3857"
}
},
"coordinates": [],
"type": "MultiPolygon"
}
}
}
【问题讨论】:
-
一张便条。您引用的 geojson 架构在 Draft-4 中,而您拥有的架构是 Draft-7。未定义将不同草稿的架构引用到您自己的行为。
-
所以我也应该将架构更改为 Draft-7 吗?我可以这样做,但我的问题仅限于多边形怎么样?
-
您的架构显示它是草稿 7,但 geojson 架构是草稿 4。而不是引用它,您应该复制所需的位,并根据需要将它们更新为 draft-7。此外,您不应该在架构中的对象中不能将 $ref 与任何其他键一起使用。其他键将被忽略。 (草稿 8 的变化)
标签: json geojson jsonschema