2016-05-30 59 views
1

我的代碼中有一個特殊的枚舉情況和需要來驗證它的名單:驗證JSON模式爲已知值

{ 
    "status": 10 
} 

讓我們用有效值這個虛構的名單:

var valid = [10, 20, 23, 27]; 

我怎樣才能改變我的JSON模式來驗證其中的一個值?

{ 
    type: 'object', 
    required: ['status'], 
    properties: { 
    status: { type: number }, 
    } 
} 

回答

2

你剛纔定義status屬性作爲enum

{ 
    "type" : "object", 
    "required" : ["status"], 
    "properties" : { 
     "status" : { 
      "type" : "number", 
      "enum" : [10, 20, 23, 27] 
     } 
    } 
} 
+0

謝謝!這是我正在尋找的。以下是相關文檔:http://json-schema.org/latest/json-schema-validation.html#anchor76 – jocull

0

如果我理解正確的話,我想你會在所有的值必須環路JavaScript沒有像東西枚舉。

var validValues = [ 10, 20, 23, 27 ]; 
var statusType = json.properties.status.type; 

/* This function call will return a boolean that tells you wether the value in your json is valid or not.*/ 
isValid(statusType); 

function isValid(statusType) 
{ 
    for(var i = 0; i < validValues.length; i++) 
    if(statusType === validValues[i]) 
     return true; 

    return false; 
} 

我簡化了一下這個例子,但是你會得到我的漂移。

+1

這是JSON模式的一部分嗎?它看起來並不像。 http://json-schema.org/ – jocull

+0

不,我可能誤解了這個問題。我提供了一種在Javascript中手動驗證JSON的方法。原因是OP包含了Javascript標籤。但是現在你發表了你的評論,我懷疑我的答案是OP尋找的。 – David

+0

我猜你不知道JSON模式,這在OP中提到過兩次。檢查一下 - 這非常有用:http://json-schema.org/ –