2017-03-11 56 views
0

我有一個支持自定義結構,如「customType1」下方,可用於定義屬性的列表的類型DML:JSON驗證器可以檢查候選json的類型定義來驗證自己嗎?

{ 
"types": { 
    "customType1" : { 
     "var1" : "string", 
     "var2" : "int" 
    } 
    . 
    . 
    . 
}, 
"properties": { 
    "prop1" : { 
    "type": "customType1", 
    "value": { 
    "var1" : "Hello", 
    "var2" : 123 
    }, 
    "prop2" : { 
    "type" : "String", 
    "value" : "www.google.com" 
    } 
    . 
    . 
    . 
} 
} 

是否可以寫一個JSON模式可以計算prop1到使用customType1中定義的結構對其進行驗證?在types中指定的自定義類型的描述僅在評估時纔會知道先驗

如果這超出了JSON模式規範的功能,那麼有關如何驗證它的任何其他建議?

回答

0

您可以使用JSON參考做到這一點:

{ 
"types": { 
    "customType1" : { 
     "var1" : "string", 
     "var2" : "int" 
    } 
    . 
    . 
    . 
}, 
"properties": { 
    "prop1" : { 
    "$ref" : "#/types/customType1" 
    }, 
    "prop2" : { 
    "type" : "String", 
    "value" : "www.google.com" 
    } 
    . 
    . 
    . 
} 
} 

這是一個「指針」,表示該屬性架構的地方。 (注意:在JSON模式中,我們大多使用關鍵「定義」而不是「約定」中的「類型」)。

+0

在這個DML中,將要由模式驗證的JSON包含定義,然後在同一個json的其他地方使用該定義。事先並不知道什麼「類型」將被定義,因此我寫的模式無法直接訪問它 – ankit

+0

我在問題中添加了什麼是示例JSON,而不是模式嘗試! – ankit