以下JSON Schema描述了lat / lon坐标的有效JSON:
{
"title": "coordinates",
"type": "object",
"properties": {
"longitude": {
"type": "number",
"minimum": -180,
"maximum":180,
"exclusiveMinimum": false,
"exclusiveMaximum": false
},
"latitude": {
"type": "number",
"minimum": -180,
"maximum":180,
"exclusiveMinimum": false,
"exclusiveMaximum": false
}
},
"required": ["longitude", "latitude"],
"additionalProperties":false
}
required
设置将latitude
属性设置为必需属性。
有没有办法为latitude
键定义别名,以便客户端可以使用latitude
或lat
- 但不能同时使用{{1}}或两者都使用?
答案 0 :(得分:3)
对于“其中一个或另一个,但不是两者”,您需要oneOf
:
{
"oneOf": [
{"required": ["lat"]},
{"required": ["latitude"]}
]
}
然后您需要的是对这两个属性有一个共同的定义。 :)
答案 1 :(得分:1)
您可以将属性名称设为模式(找到示例here)
{
"title": "coordinates",
"type": "object",
"patternProperties": {
"/^lat(itude)?$/": {
"type": "number",
"minimum": -180,
"maximum":180,
"exclusiveMinimum": false,
"exclusiveMaximum": false
}
},
"additionalProperties":false
}
...但这打破了required
属性(它似乎无法处理模式)。不是很好的答案,但也许有帮助。 :)