2014-02-23 53 views
1

以下JSON架構描述了一種有效的JSON爲緯度/經度座標: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鍵定義別名,以便客戶端可以使用latitudelat--但不是兩者都不是?

回答

3

對於「一個或另一個,但不能同時」,你需要oneOf

{ 
    "oneOf": [ 
     {"required": ["lat"]}, 
     {"required": ["latitude"]} 
    ] 
} 

所有你需要的則是有兩個屬性共同定義。 :)

0

可以使屬性名的模式(發現例子here

{ 
    "title": "coordinates", 
    "type": "object", 
    "patternProperties": { 
     "/^lat(itude)?$/": { 
      "type": "number", 
      "minimum": -180, 
      "maximum":180, 
      "exclusiveMinimum": false, 
      "exclusiveMaximum": false 
     } 
    }, 
    "additionalProperties":false 
} 

...但是這打破了required特性(它似乎無法處理模式)。不是一個好的答案,但可能有幫助。 :)