2015-06-29 51 views
3

不要混淆任何人,我會驗證陣列開始......JSON模式:驗證對象的值,無按鍵

關於陣列,JSON模式可以檢查是否(((...)子元素)子)陣列符合的結構:

"type": "array", 
"items": { 
    ... 
} 

當驗證對象,我知道可以通過的某些鍵與它們相應的值的類型,如:

"type": "object", 
"properties": { 
    // key-value pairs, might also define subschemas 
} 

但是如果我有一個對象,我想用它來驗證值只有(沒有鍵)?

我的真實案例是我在配置按鈕:有可能是編輯刪除添加按鈕等等。它們都具有特定的剛性結構,我確實有JSON模式。但我不想只限於['edit', 'delete', 'add'],未來可能會有publishprint。但我知道他們都會符合我的子模式。

每個按鈕是:

BUTTON = { 
    "routing": "...", 
    "params": { ... }, 
    "className": "...", 
    "i18nLabel": "..." 
} 

而且我有按鈕的對象(不是數組):

{ 
    "edit": BUTTON, 
    "delete": BUTTON, 
    ... 
} 

我怎麼能寫這樣的JSON模式?有沒有什麼辦法結合objectitems(我知道有對象屬性和數組項關係)。

回答

4

您可以使用additionalProperties。如果您將additionalProperties設置爲模式而不是布爾值,則任何未使用propertiespatternProperties關鍵字明確聲明的屬性都必須與給定模式匹配。

{ 
    "type": "object", 
    "additionalProperties": { 
    ... BUTTON SCHEMA ... 
    } 
} 

http://json-schema.org/latest/json-schema-validation.html#anchor64

+0

真正的JSON模式專家,你是:) – ducin

+0

什麼,如果你想打一個類似數組的規則,必須有至少1鍵值對?這也是可行的嗎? – majorBummer

+1

@majorBummer是的,只需添加'「minProperties」:1' – Jason