2016-10-31 57 views
0

驗證屬性名我有這樣的JSON對象JSON模式在陣列

{ 
    "status": 68, 
    "error": [ 
    { 
     "description_ru": "Ошибка авторизации. Пожалуйста, проверьте правильность введенных e-mail и пароля." 
    }, 
    { 
     "description_en": "Authorization error. Please check login and password." 
    } 
    ] 
} 

而且我寫下一個JSON模式

{ 
    "title": "Неверно указан пароль", 
    "type": "object", 
    "properties":{ 
    "status":{ 
     "description": "Статус операции", 
     "type": "integer" 
    }, 
    "error":{ 
     "description":"Информация об ошибке на разных языках", 
     "type": "array", 
     "items": { 
     "properties":{ 
      "description_ru":{ 
      "description": "Информация об ошибке на русском языке", 
      "type": "string" 
      }, 
      "description_en":{ 
      "description": "Информация об ошибке на английском языке", 
      "type": "string" 
      } 
     } 
     } 
    } 
    }, 
    "required":["status", "error"], 
    "additionalProperties": false 
} 

我有下一個問題。如果我JSON模式錯誤更改名稱錯誤編輯和運行驗證,然後我得到一個錯誤:

false Property error does not exist in the schema

好吧,這是完美的!

但是,如果我在JSON模式更改屬性名稱數組錯誤內description_en* description_en編輯和運行驗證,那麼我不明白的錯誤。

請告訴我爲什麼會發生這種情況?

回答

0

因爲需要「錯誤」,但「description_en」不是。

添加「additionalProperties」在項目對象:

... 
"items": { 
    "type": "object", 
    "properties": { 
     "description_ru":{ 
     "description": "Информация об ошибке на русском языке", 
     "type": "string" 
     }, 
     "description_en":{ 
     "description": "Информация об ошибке на английском языке", 
     "type": "string" 
     } 
    }, 
    "additionalProperties": false 
    }, 
"minItems": 2 
... 
+0

好吧,我讓這個模式你的建議: https://jsfiddle.net/u3751gsn/ 而這個方法行不通。 如果可以,請使用此在線驗證器https://json-schema-validator.herokuapp.com/ –

+0

你說得對,我沒有仔細看json的數據。在你的情況下,description_en和description_ru不是必需的,你可以使用其中一個或另一個,因此它們都是可選的。我更新了回覆,我想現在你會得到你的預期。 – Pedro

+0

Hello Pedro! 謝謝你的幫助!如果您指定數組元素的數量**「minItems」,則您的解決方案將完全解決問題:2 **,請將其添加到您的答案中,並且我接受此答案。 –