2017-09-01 65 views
0

我有下面的示例模式。我需要確保在json文件中至少應出現一次「name」:「This is Mandatory」驗證JSON模式中的強制字符串值

是否有可能實現此目的?請幫助。

"SchemaList": { 
     "type": "array",  
     "additionalItems": false, 
     "items": { "$ref": "#/definitions/Schema1" }   
     }, 
    "Schema1": { 
     "type": "object",   
     "properties": { 
     "description": { "type": "string" }, 
     "name": { "type": "string" }   
      } 
     } 

回答

0

最新的草案(草案6)引入了一個新的關鍵字"contains",使用它可以表達一個給定的模式應該與至少一個數組中的元素。您可以使用這種方式:

{ 
    "SchemaList": { 
     "additionalItems": false, 
     "contains": { 
      "properties": { 
       "name": { 
        "const": "This is Mandatory" 
       } 
      }, 
      "required": [ 
       "name" 
      ] 
     }, 
     "items": { 
      "$ref": "#/definitions/Schema1" 
     }, 
     "type": "array" 
    } 
} 

但牢記the latest draft version of json-schema has only a very few implementations,所以這取決於你使用的庫中,"contains"關鍵字可能無法正常工作。

+0

非常感謝@erosb 這正是我一直在尋找的。我之前嘗試過「包含」,但沒有意識到它從v6開始有效。順便說一句,我在Swagger 2.0(使用V4)中使用它。反正這是非常有幫助的。祝你有美好的時光:) –

0

請參考以下鏈接瞭解詳情:http://json-schema.org/example1.html

{ 
"SchemaList": { 
    "type": "array", 
    "additionalItems": false, 
    "items": { 
     "$ref": "#/definitions/Schema1" 
    } 
}, 
"Schema1": { 
    "type": "object", 
    "properties": { 
     "description": { 
      "type": "string" 
     }, 
     "name": { 
      "type": "string" 
     } 
    } 
}, 
"required": ["name"] 
} 
+0

在上面的例子中,聲明「名稱」是強制性的,但它不能強制名稱的值。 我不能使用枚舉,因爲我需要名稱的動態值,它應該命令名稱:「ThisIsMandatory」至少發生一次。 爲了更清楚我需要驗證名稱的值。 –

+0

您正在嘗試獲取名稱值並需要對其進行操作? –